Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyrażenie regularne, kilka wyrazów pod jednym symbolem
Forum PHP.pl > Forum > PHP
Nvm
Witam, mam problem z takim oto regexem:
  1. @<td><span><style>\.((.*){display:([a-z]+)})+</style>(.*)</span></td><td>([0-9]+)</td>@Uism

a dokładnie z tym oto miejscem:
  1. \.((.*){display:([a-z]+)})+

Powyższe wyrażenie bierze pod uwagę tylko jedno pojawienie się frazy tego typu - ".klasa{display:costam}". Jesli w tym miejscu pojawi się taki ciąg ".klasa{display:costam}.klasa2{display:costam2}" to zostanie zwrócony tylko jeden "przypadek" pasujący do wzoru. Samo "dopasowanie" wzoru do treści jest poprawne (regex zwraca jakąś tam tablicę), ale chciałbym żeby zwracało mi wszystkie pojawiające się wyrażenia (czyli w podanym przykładzie: klasa oraz costam i klasa2 oraz costam2). Czy ma ktoś jakiś pomysł jak temu zaradzić?
cudny
No jasne, preg_match_alll
Nvm
Hmm nie zrozumieliśmy się biggrin.gif. Używam tego wzoru na preg_match_all, ale pomimo to kiedy w danym miejscu pojawia się kilka pasujących do wzoru
  1. \.((.*){display:([a-z]+)})+
fraz (jest tam +, czyli z założenia może być jedno lub więcej powtórzeń) w zwracanej tablicy jest tylko jedno. Chciałbym aby były wszystkie. Tu jest przykład tego o co mi chodzi: http://regexp.pl/main/show/157176, we wprowadzonym wyrażeniu pojawia się ".cl1v{display:none}.QcCs{display:inline}", a w tablicy zwracane jest tylko pierwsze "cl1v{display:none}".
cudny
  1. .(([^{]+){display:([a-z]+)})+
Nvm
Niestety to działa w ten sam sposób, jak przed poprawką.
cudny
wymień całe:

  1. \.((.*){display:([a-z]+)})+


na:

  1. (\.([^{]+){display:([a-z]+)})+

Nvm
Dalej to samo, ale już sobie poradziłem. Trochę na około, ale działa.
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.