ďťż

[PHP] preg_replace

       

Podstrony


telcocafe

Oto kodzik używany przez mnie
<? $hlpI = 0; function saveV($txt) { global $tmpE; global $hlpI; $aPos = $i+1 ; $tmpE[$aPos] = $txt[1]; return "nawias('$aPos')"; } function getV($txt) { global $tmpE; global $hlpI; $aPos = $txt[1] ; return "nawias('$tmpE[$aPos]')"; } function main($txt) { $txt = preg_replace("#nawias\('(.*?)'\)#si", "saveV", $txt); $txt = (string)$txt; $txt = str_replace('cos', 'inne', $txt); $txt = preg_replace("#nawias\('(.*?)'\)#si", "getV", $txt); return $txt; } ?>

Chodzi o to, że odpalam funkcję main() która zamienia cos na inne. Tylko, że nie chcę zamieniać ciągu jeśli coś będzie w innym ciągu ("nawias('cos')").
Postanowiłem zrobić to tak jak przedstawiłem powyżej (tablica globalna, a ciąg zamieniam na taki, który zawiera pozycje ciągu w tablicy. I na oko pięknie. Tylko, że w tym miejscu:
$txt = preg_replace("#nawias\('(.*?)'\)#si", "saveV", $txt);
zamiast wywołać funkcję saveV, zamienia ciąg na "saveV".

Czy można coś z tym zrobić, lub mój problem rozwiązać w inny sposób?

Aha używam tablicy, bo cos to są różne wartości.
Użytkownik DJ_ProG edytował ten post 13 czerwiec 2006, 17:09


Nic dziwnego ze zamienia na saveV ;)
zmien
$txt = preg_replace("#nawias\('(.*?)'\)#si", "saveV", $txt);
na
$txt = preg_replace_callback("#nawias\('(.*?)'\)#si", "saveV", $txt);

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.