Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Zmiana eregi na preg_match
DannyM
post 19.03.2012, 12:29:02
Post #1





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Mam cos takiego :
  1. *if (eregi("<trans>.*<pos_id>([0-9]*)</pos_id>.*<session_id>(.*)</session_id>.*<order_id>(.*)</order_id>.*</trans>", $response, $parts)) $result = getme($parts);


i zmienilem na

  1. if (preg_match('<trans>.*<pos_id>([0-9]*)</pos_id>.*<session_id>(.*)</session_id>.*<order_id>(.*)</order_id>.*</trans>', $response, $parts)) $result = getme($parts);


otrzymuje blad

PHP Warning: preg_match() [<a href='function.preg-match'>function.preg-match</a>]: Unknown modifier '.'

Moze mi ktos pomoc?

Ten post edytował DannyM 19.03.2012, 12:37:31
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post 19.03.2012, 12:33:11
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Całe wyrażenie w preg_match, należy czymś objąć, np ## czyli
preg_match('#twoje wyrazenie#')


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 26.03.2012, 09:12:52
Post #3





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Mam jeszcze jedna zagwozdke. Wczesniej wyciagalem sobie czesci uzywajac np.
  1. $parts[7]


a teraz nie idzie. Czy musze inaczej je wyciagac?
Go to the top of the page
+Quote Post
Lorum3
post 26.03.2012, 10:07:17
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 5
Dołączył: 10.12.2011
Skąd: Poznań

Ostrzeżenie: (0%)
-----


  1. print_r( $parts);
Go to the top of the page
+Quote Post
DannyM
post 30.03.2012, 07:49:29
Post #5





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Walcze z tym i mnie wkurza
Ktora wersja bedzie prawidlowa?

  1. if (preg_match('/<trans>\.*<id>([0-9]*)</id>\.*<session>(\.*)</session>([a-z0-9]*)<order_id>(\.*)</order_id>\.*</trans>/', $response, $parts));
  2. if (preg_match('/<trans>.*<id>([0-9]*)<\/id>.*<session>(.*)<\/session>([a-z0-9]*)<order_id>(.*)</order_id>.*<\/trans>/', $response, $parts));
  3. if (preg_match('/<trans>(.*)?<id>([0-9]*)<\/id>(.*)?<session>(.*)?<\/session>([a-z0-9]*)<order_id>(.*)?</order_id>.*<\/trans>/', $response, $parts));
Go to the top of the page
+Quote Post
nospor
post 30.03.2012, 07:51:08
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




każde / masz poprzedzić \ A ty jedno pomijasz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 30.03.2012, 08:09:48
Post #7





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Prosze pokaz mi przyklad gdzie pomijam - to co napisalem to z informacji jakie znalazlem w sieci

Jakbardziej prawdziwy wydaje mi sie

'/<trans>(.*)?<id>([0-9]*)<\/id>(.*)?<session>(.*)?<\/session>([a-z0-9]*)<order_id>(.*)?<\/order_id>(.*)?<\/trans>/'

Ten post edytował DannyM 30.03.2012, 08:10:28
Go to the top of the page
+Quote Post
nospor
post 30.03.2012, 08:12:44
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Prosze pokaz mi przyklad gdzie pomijam
Raczysz sobie żartować.... w przykładach wyżej pomijałeś jeden /. Natomiast w poprzednim poście już poprawiłeś ten jeden i do mnie z takim tekstem, ze ci niby kit wciskam. No proszę cie...

Przykład z ostatniego postu wydaje się być ok. Rzuca ci jakieś błędy czy jak?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 30.03.2012, 08:16:45
Post #9





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Prosze sie nie denerwowac kolego smile.gif
Zobaczylem ten brakujacy znak i wsyawilem aby upewnic sie czy dobrze mysle. Doceniam twoja prace wiec nie zartuje sobie.
Juz sie boje zapytac ale co tam ... czy te znaki zapytania po (.*)? to dobrze? i czy .* musi byc w nawiasie?

Ten post edytował DannyM 30.03.2012, 08:17:07
Go to the top of the page
+Quote Post
nospor
post 30.03.2012, 08:22:29
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Zobaczylem ten brakujacy znak i wsyawilem aby upewnic sie czy dobrze mysle
No to trzeba było to napisać, że już widzisz. Nie napisałeś tego i wniosek mi mógł nasunąć się tylko jeden.... wink.gif

Cytat
czy te znaki zapytania po (.*)? to dobrze?
Nie. Albo ma być tak: .*? albo tak (.*?)
Cytat
i czy .* musi byc w nawiasie?
Nie musi. Nawias określa grupowanie elementów. Ma to też odwzorowanie w tym co zwraca preg_match


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 30.03.2012, 09:18:00
Post #11





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Czy jesli zrobie
  1. print_r( $parts);

i mam
Array
(
)

to cos zle zrobilem z ? \/ itd? w preg_match ?
Go to the top of the page
+Quote Post
--marek--
post 30.03.2012, 09:28:28
Post #12





Goście







a daj sobie echo $parts[1]; itp...

tez mam problem dokładnie z takim samym wyrażeniem, jeśli uda ci się napisać poprawnie to proszę abyś się podzielił
Go to the top of the page
+Quote Post
nospor
post 30.03.2012, 09:31:11
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Skoro $parts zawiera pustą tablicę to tym bardziej $parts[1] nic nie będzie miało.... ty myśliś ze to czary jakieś czy cośquestionmark.gif

@Danny pokaż jak teraz wygląda wyrażenie. Pokaż też na jakim tekście działasz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
--marek--
post 30.03.2012, 09:34:36
Post #14





Goście







<response>
<status>OK</status>
<trans>
<id>2323444994</id>
<pos_id>100778</pos_id>
<session_id>6133298</session_id>
<order_id>634-P-S-12</order_id>
<amount>2990</amount>
<status>99</status>
<pay_type>t</pay_type>
<pay_gw_name>pt</pay_gw_name>
<desc>abcd</desc>
<desc2>634</desc2>
<create>2012-03-30 09:34:59</create>
<init>2012-03-30 09:35:01</init>
<sent>2012-03-30 09:35:01</sent>
<recv>2012-03-30 09:35:01</recv>
<cancel></cancel>
<auth_fraud>0</auth_fraud>
<ts>1333235326788</ts>
<sig>554b3517b42424b51d6ecfa37dd73b9</sig> </trans>
</response>
Go to the top of the page
+Quote Post
DannyM
post 30.03.2012, 09:37:34
Post #15





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Finalnie wyglada to tak:

pobieram je CURL

  1. $response = curl_exec($ch);

dalej
  1. if (preg_match('/<trans>.*?<id>([0-9]*?)<\/id>.*?<session>(.*?)<\/session>.*?<order_id>(.*?)<\/order_id>.*?<amount>([0-9]*?)<\/amount>.*?<status>([0-9]*?)<\/status>.*?<desc>(.*?)<\/desc>.*?<ts>([0-9]*?)<\/ts>.*?<sig>([a-z0-9]*?)<\/sig>.*?<\/trans>/', $response, $parts));
  2.  
  3. print_r( $parts);

Sprawdzalem i dane z xml sa przekazywane i wyswietlaja sie przy uzyciu echo $response

Widze, ze podobnie jak wyzej

Ten post edytował DannyM 30.03.2012, 09:39:16
Go to the top of the page
+Quote Post
nospor
post 30.03.2012, 09:42:06
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




[0-9]*?
Co to jest? Danny, nie strzelaj. Poczytaj co robi *, poczytaj co robi znak zapytania a nie strzelasz

.*? To sytuacja wyjątkowa i tylko ta jedna. Oznacza by brać jak najmniej.
.* - brać jak najwiecej.

W każdym innym przypadku nie można stosować *? razem bo to bezsensu.

Cytat
pobieram je CURL
No i super. A ja chciałbym je zobaczyć.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 30.03.2012, 09:48:17
Post #17





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


  1. <response>
  2. <status>OK</status>
  3. <trans>
  4. <id>204794807</id>
  5. <session>2ea53c676989920848ead65bcea6</session>
  6. <order_id>7</order_id>
  7. <amount>1850880</amount>
  8. <status>2</status>
  9. <desc>oplata</desc>
  10. <ts>1333094962629</ts>
  11. <sig>b1b018995sdfevwwy03059a076454c44</sig>
  12. </trans>
  13. </response>
Go to the top of the page
+Quote Post
nospor
post 30.03.2012, 09:52:29
Post #18





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. if (preg_match('/<trans>\s*<id>(\d+)<\/id>\s*<session>(.*?)<\/session>\s*<order_id>(.*?)<\/order_id>\s*<amount>(\d+)<\/amount>\s*<status>(\d+)<\/status>\s*<desc>(.*?)<\/desc>\s*<ts>(\d+)<\/ts>\s*<sig>([a-z0-9]*)<\/sig>\s*<\/trans>/', $response, $parts));
  2.  
  3. print_r( $parts);
  4.  
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
DannyM
post 30.03.2012, 09:56:09
Post #19





Grupa: Zarejestrowani
Postów: 507
Pomógł: 2
Dołączył: 30.10.2003
Skąd: Poznań

Ostrzeżenie: (10%)
X----


Niestety pusto sad.gif
Array
(
)

Ten post edytował DannyM 30.03.2012, 09:57:58
Go to the top of the page
+Quote Post
nospor
post 30.03.2012, 10:00:30
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A mi działa. Pokaż dokładnie cały kod po zmianach


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:46