Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak połączyć 2 wyrażenia regularne ?
Forum PHP.pl > Forum > Przedszkole
mefistofeles
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?
tehaha
tak, możesz stworzyć alternatywę:
  1. if(preg_match($pattern_1, $string) || preg_match($pattern_2, $string))
  2. {
  3. echo "correct!";
  4. }
wookieb
Najłatwiej tak jak mówisz. Możnaby pokombinować zrobić to od razu w jednym wyrażeniu ale musiałbyś je pokazać.
mefistofeles
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ć.
wookieb
  1. $pagecntreg = '/(?:&nbsp)?<b>(\d+)<b><\/a>&nbsp<td align=right/i';
mefistofeles
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>
wookieb
Aha sorki nie zauważyłem
  1. $pagecntreg = '/(?:&nbsp)?<b>(\d+)<\/?b>(?:<\/a>)?&nbsp<td align=right/i';
mefistofeles
No i gitara smile.gif
Wielkie dzięki !
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.