Portál AbcLinuxu, 9. května 2025 21:52
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
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
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.