Jag har en sträng som kan se ut enligt följande:
$str = "Jag heter {namn} och jag gillar {hobby}";
och en array:
$data= array("namn" => "anders andersson", "hobby" => "fotboll");
Jag byter sedan ut allt som står innanför { och } till lämpligt innehåll så här:
preg_replace('/\{([a-z0-9\-_]*?)\}/ise', 'isset($data[\'\1\']) ? $data[\'\1\'] : \'\'', $string);
Resultat:
Jag heter anders andersson och jag gillar fotboll
Klockrent tack vare Hulken.
Nu vill jag kunna lägga in funktioner också. Strängen kan då se ut så här:
$str = "Jag heter formateString({namn}) och jag gillar {hobby}";
och här anropas alltså en funktion med namnet "formateString" (exempel):
function formateString($str) {
$new_str = ucwords($str);
echo "<b>".$new_str."</b>";
}
Så här långt har jag kommit med min preg_replace:
preg_replace('/([a-zA-Z0-9\-\_]*)[\(](.*)[\)]/', 'call_user_func(\'\1\', \'\2\')', $str);
Men då blir utskriften:
Jag heter call_user_func('formateString', 'robert') och jag gillar fotboll
Jag vill ju såklart ha det så här:
Jag heter <b>Anders Andersson</b> och jag gillar fotboll
Jag tror jag är någorlunda på rätt väg... Hur ska jag få till det här??
Tack! :)