Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_replace - problem
Forum PHP.pl > Forum > PHP
expert
Mam taki kod:

Kod
$tpl=preg_replace('<<'.strtoupper($remov).'<<(.*?)>>'.strtoupper($remov).'>>', '', $tpl); //podmienia zmienne na wartości


Cytat
<<SAVELOG<<
aaaaaa
>>SAVELOG>>


I przypuśćmy, że zmienna $remov=savelog; Dlaczego preg_replace nie działa jak potrzeba?

Kod
$tpl=preg_replace("(\<\<".strtoupper($remov).'\<\<(.*?)\>\>'.strtoupper($remov)."\>\>)", '', $tpl); //podmienia zmienne na wartości


Wynik bez zmian. Nadal to samo.
wookieb
Ponieważ zapisuje się
Kod
$remov='savelog';
expert
Racja. ale po mimo tego i tak nie działa ta funkcja.
ultra_18
sory zle ci powiedzialem z ta podmiana cudzyslowow i znakami ucieczki, zupelnie nie o to mi chodzilo, jednak mysl i tak byla bledna ale dam ci rade jak masz duzo zmiennych i funkcji to nie baw sie w pojedyncze cudzyslowy i kropki jako laczniki tylko stawiaj " wtedy mozesz pisac rownorzedny tekst z funkcjami i zmiennymi i jest wtedy o trudniej sie pomyslic. Wracajac do tematu ja na twoim miejsce pobawil sie z funkcja eregi i znalazl dobry wzor do wyszukiwania a dopiero pozniej bawil sie w podmiane.

(.*?) nie wyszuka ci czasem wszystkich znakow do konca tekstu?
nie powinno sie napisac [^'>>']* ?
expert
Niby eregi przy takim ciągu zwraca 1: '<<'.strtoupper($remov).'<<(.*)>>'.strtoupper($remov).'>>'
a preg_replace nic nie robi....
ultra_18
Cytat(expert @ 8.12.2008, 20:08:18 ) *
Niby eregi przy takim ciągu zwraca 1: '<<'.strtoupper($remov).'<<(.*)>>'.strtoupper($remov).'>>'
a preg_replace nic nie robi....


ereg zwaraca wartosci jak znajdzie ciag a eregi wyszukuje wzor w ciagu i zwraca wynik do tablicy ja wyszukalem po tym wzorze co napisales i wynik byl inny niz bys chcial uzyskac wiec proponuje najpierw znalezdz poprawny wzor wyrazenia regularnego
wookieb
Kod
$test='<<SAVELOG<<
aaaaaa
>>SAVELOG>>';


$remov='savelog';

$test=preg_replace("/(<<".strtoupper($remov).'<<(.*?)>>'.strtoupper($remov).">>)/s", '', $test);
var_dump($test);


Wazny był modyfikator s. http://pl.php.net/manual/pl/reference.pcre...n.modifiers.php
expert
Cytat(wookieb @ 9.12.2008, 09:54:58 ) *
Kod
$test='<<SAVELOG<<
aaaaaa
>>SAVELOG>>';
$remov='savelog';

$test=preg_replace("/(<<".strtoupper($remov).'<<(.*?)>>'.strtoupper($remov).">>)/s", '', $test);
var_dump($test);


Wazny był modyfikator s. http://pl.php.net/manual/pl/reference.pcre...n.modifiers.php



Działa! 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.