![]() |
![]() ![]() |
![]() |
-Guest- |
![]()
Post
#1
|
Goście ![]() |
Dlaczego poniższy kod działa tak jak działa?
plik z szablonem strony Kod to sie pokaze {* asdgfhgf hfgh h assdadasd *} to sie nie pokaze {* asdash gfh fghgfh dadasd *} i to tez sie pokaze parser php5
Wynik? Kod to sie pokaze i to tez sie pokaze Dlaczego nie pokazuje mi sie tekst miedzy dwoma komentarzami? ("to sie nie pokaze") |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
To jest spowodowane przez zachłanność erega.
Jeśli dasz (.+) to wyszukuje jak najdłuższe wystąpienie, czyli czeka do ostatniego '}' Zrób tak:
|
|
|
-Guest- |
![]()
Post
#3
|
Goście ![]() |
Niestety nic to nie dalo
![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak nie działa jak działa:
To:
Zwraca: Kod to sie pokaze to sie nie pokaze i to tez sie pokaze
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Matrach przecież dodanie nawiasów nie wpłynie na to co cały reg obejmuje... (?)
Trzeba faktycznie zmienić zachłannnosć, ale dostawiając znak zapytania (wtedy przestawia się tryb dopasowania z 'chciwie' na 'leniwie' - to tak w wolnym tłumaczeniu ('greedy', 'lazy')). Kod {\*(.+?)\*}
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(mariuszn3 @ 2006-05-07 14:01:11) Matrach przecież dodanie nawiasów nie wpłynie na to co cały reg obejmuje... (?) Gdybyś zauważył to dałem preg_replace, a nie ereg_replace A te nawiasy to takie ograniczniki sobie dałem (?) Równie dobrze może być:
A twoje wyrażenie jest niepoprawne. Testowałeś je? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(matrach @ 2006-05-07 12:24:05) Cytat(mariuszn3 @ 2006-05-07 14:01:11) Matrach przecież dodanie nawiasów nie wpłynie na to co cały reg obejmuje... (?) Gdybyś zauważył to dałem preg_replace, a nie ereg_replace A te nawiasy to takie ograniczniki sobie dałem (?) Równie dobrze może być:
A twoje wyrażenie jest niepoprawne. Testowałeś je? Gość odwoływał się do funkcji ereg_replace(), w której nie stosuje się żadnych ograniczników. Twój przykład faktycznie odwołuje się do preg_replace (co przeoczyłem).. nie mniej po odjęciu ograniczników Twój regex zupełnie niczym się różni od tego, który gościowi sprawia problem. Mój przykład działa jak najbardziej prawidłowo, testowałem (choć jest na tyle prosty, że naprawdę można obejść się bez testowania). |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 92 Pomógł: 0 Dołączył: 17.04.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(mariuszn3 @ 2006-05-08 14:39:43) nie mniej po odjęciu ograniczników Twój regex zupełnie niczym się różni od tego, który gościowi sprawia problem. 1) Po odjęciu ograniczników sktypt działa, choć wyrażenie jest takie samo, ale działa inaczej. Zostawia '{' i '}' gdyż uznaje je za ograniczniki. 2) Od tego są ograniczniki żeby je dawać w preg'u, a nie je stamtąd usuwać. (Wiem że to mądrze sformułowałem ![]() 3) Jak gościu sie odwoływał do ereg_replace to ja nie mogę do preg_replace ![]() 4)Ten twój regex mi zwraca bład, choć możliwe że mam jakąś inną wersje biblioteki.(albo coś) 5)Gościu już dawno rozwiązał problem |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 5.07.2025 - 04:06 |