Portál AbcLinuxu, 9. května 2025 21:52

Dotaz: preg_replace_callback

4.2.2009 13:30 Mr.S1lent.cz
preg_replace_callback
Přečteno: 426×
Odpovědět | Admin

Zdravim, mam zadani prace, kdy mam ze vzoru tela mailu nahradit retezce typu %%prom%% nahradit obsahem promenne $prom, ktera je definovana v poli $variables, cili $variables['prom'].

Uvazoval jsem o pouziti metody preg_replace_callback, jenze s ni nemam zkusenosti a potreboval bych poradit, pokud jsem ovsem zvolil spravny postup:-)

Vzor mailu s obsahem retezcu uvedenych vyse jsem vytahl z db a ulozil do promenne $message, pote jsem nadefinoval potrebne hodnoty do preg_replace_callback:

$mailbody = preg_replace_callback('/%%([a-z]+[a-z0-9_\-]*)\((.*?)\)%%/s', callback, $message);

nevim ale, jak udelat to, ze mi fce callback retezec %%neco%% prevede na $variable['neco'], v tom opravdu plavu... :-(

Pokud bude nekdo tak hodny a poradi mi, budu mu opravdu vdecny, predem dekuji vsem za jejich drahocenny cas investovany pro reseni tohoto meho problemu

s pozdravem

Mr.S1lent.cz

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.2.2009 14:29 Mr.S1lent.cz
Rozbalit Rozbalit vše Re: preg_replace_callback
Odpovědět | | Sbalit | Link | Blokovat | Admin

Uz jsem na to prisel, reseni jest takove:

  function var_replace($matches)
  {
       $ret = str_replace('%', '', $matches[0]);
       return '$variables[' . "'" . $ret . "']";
  }

  $mailbody = preg_replace_callback('/%%[A-Za-z][A-Za-z0-9]*%%/', var_replace, $message);
  echo $mailbody . "\r\n";

 

prosim o lock :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.