Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenie regularne, kilka wyrazów pod jednym symbolem
Nvm
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 16.03.2010

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


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ć?

Ten post edytował Nvm 11.12.2012, 23:12:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
cudny
post
Post #2





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


No jasne, preg_match_alll


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
Nvm
post
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 16.03.2010

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


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}".
Go to the top of the page
+Quote Post
cudny
post
Post #4





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


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


Ten post edytował cudny 11.12.2012, 23:32:21


--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
Nvm
post
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 16.03.2010

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


Niestety to działa w ten sam sposób, jak przed poprawką.
Go to the top of the page
+Quote Post
cudny
post
Post #6





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


wymień całe:

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


na:

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



--------------------
..::: Jak pomogłem to kliknij pomógł. Tak rzadko używacie tej opcji :( :::..
Go to the top of the page
+Quote Post
Nvm
post
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 16.03.2010

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


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