Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne - niedziałające odwołania, j.w.
Capellini
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 16.10.2007

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


Czy mógłby ktoś spojrzeć na poniższe wyrażenie?

  1. preg_match("/<(.*)>(.*)<\/\1>/", "Ten tekst jest odwrocony: <odwroc>fdgd</odwroc>", $matches);


Po wykonaniu tej instrukcji, $matches jest pustą tablicą, a wynik powinien być taki:

  1. $matches[0] == "<odwroc>fdgd</odwroc>"
  2. $matches[1] == "odwroc"
  3. $matches[2] == "fdgd"


Zauważyłem, że problem jest w odwołaniu \1 bo gdy \1 zastąpię słowem 'odwroc', to wszystko działa jak należy. Nadal nie wiem, co konkretniej jest nie tak.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





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




Cytat(Ellington @ 8.08.2009, 13:43:03 ) *


Nawet nie wiesz, że to nic nie zmienia. Więc jak coś radzisz to sprawdź a nie bredzisz.

Co do tematu to \1 (i podobne) można stosować w takich funkcjach jak pre g_replace a nie pre g_match i pre g_match_all. wiec twoje wyrazenie powinno wygladac mniej wiecej tak
  1. preg_match("/<(.*?)>(.*?)<(.*?)>/", "Ten tekst jest odwrocony: <odwroc>fdgd</odwroc>", $matches);
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 05:16