Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak połączyć 2 wyrażenia regularne ?, [OR]
mefistofeles
post
Post #1





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


Używam w jednym ze skryptów wyrażenia, które ogólnie się sprawdza, ale w jednym wyjątkowym wypadku,
to wyrażenie nie pasuje. Potrzebuje sprawdzać więc za każdym razem czy string pasuje do 1 lub 2 wyrażenia.
Można to jakoś szybko zrobić za pomocą | OR , czy po prostu najpierw trzeba sprawdzić czy pasuje do 1 a jeśli nie to czy pasuje do 2?
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


tak, możesz stworzyć alternatywę:
  1. if(preg_match($pattern_1, $string) || preg_match($pattern_2, $string))
  2. {
  3. echo "correct!";
  4. }
Go to the top of the page
+Quote Post
wookieb
post
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Najłatwiej tak jak mówisz. Możnaby pokombinować zrobić to od razu w jednym wyrażeniu ale musiałbyś je pokazać.


--------------------
Go to the top of the page
+Quote Post
mefistofeles
post
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


Wyrażenie jest takie:
  1. $pagecntreg = '/<b>(\d+)<b><\/a>&nbsp<td align=right/i';


Ale w wyjątkowym przypadku powinno ono łyknąć też tego stringa:

  1. &nbsp<b>6</b>&nbsp<td align=right


co się oczywiście nie dzieje i stąd mój problem...

//EDIT: Chodzi oczywiście o wyciągnięcie liczby 6

Nawet nie zauważyłem podpowiedzi Tehaha smile.gif
Zaraz spróbuje przetestować.

Ten post edytował mefistofeles 21.05.2010, 15:10:16
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. $pagecntreg = '/(?:&nbsp)?<b>(\d+)<b><\/a>&nbsp<td align=right/i';


--------------------
Go to the top of the page
+Quote Post
mefistofeles
post
Post #6





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


Ten sposób wookieb nie działa ale chyba dlatego że w tym drugim przypadku przy drugim </b> jest znacznik
zamykający a normalnie nie ma tego znacznika zamykającego i jest tak: <b>(\d+)<b>
W 2 przypadku (tym o którym jest mowa) jest ten znacznik <b>(\d+)</b>

Ten post edytował mefistofeles 21.05.2010, 15:20:28
Go to the top of the page
+Quote Post
wookieb
post
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Aha sorki nie zauważyłem
  1. $pagecntreg = '/(?:&nbsp)?<b>(\d+)<\/?b>(?:<\/a>)?&nbsp<td align=right/i';


--------------------
Go to the top of the page
+Quote Post
mefistofeles
post
Post #8





Grupa: Zarejestrowani
Postów: 255
Pomógł: 0
Dołączył: 23.06.2009

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


No i gitara smile.gif
Wielkie dzięki !
Go to the top of the page
+Quote Post

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 Aktualny czas: 21.08.2025 - 13:21