learnMedlem sedan jan. 20051 130 inlägg Jag har följande:
$data = array("namn"=>"Fredrik", "hobby"=>"fotboll");
$string = "Hej jag heter <data>namn</data> och gillar <data>hobby</data>";
och vill nu m.h.a. någon smart PHP-funktion åstadkomma följande output:
Hej jag heter Fredrik och gillar fotboll
Jag antar att preg_replace är den funktion jag är ute efter, men hur ska jag formulera mina pattern och replacement?
Tack på förhand!
colioneMedlem sedan juni 20014 421 inlägg Du skulle kunna ta dig en titt på vsprintf-funktionen.
Exempel:
<?php
$data = array("namn"=>"Fredrik", "hobby"=>"fotboll");
$string = vsprintf("Hej jag heter %s och gillar %s",$data);
print $string;
learnMedlem sedan jan. 20051 130 inlägg
colione skrev:
Du skulle kunna ta dig en titt på vsprintf-funktionen.
Exempel:
<?php
$data = array("namn"=>"Fredrik", "hobby"=>"fotboll");
$string = vsprintf("Hej jag heter %s och gillar %s",$data);
print $string;
Ser intressant ut, nu har jag bara kikat på funktionen som hastigast men blir det inte problem om förekomsten kastas om (jag vet inte hur strängen ser ut i förväg, detta är bara ett exempel)
$data = array("namn"=>"Fredrik", "hobby"=>"fotboll");
$string = "Hej gillar <data>hobby</data> och heter <data>namn</data>";
Sedan så vill jag gärna kunna använda %-tecken osv hur jag vill i strängen utan att det påverkar outputen... om du förstår hur jag menar.
Kanske något med preg_replace är att föredra?
learnMedlem sedan jan. 20051 130 inlägg Jag har kört fast helt och hållet.
Det måste ju finnas något sätt? Snälla hjälp mig! :x
learnMedlem sedan jan. 20051 130 inlägg Jo men någon med erfarenhet av PHP måste ju ha en aning, även om det är en riktigt klurig fråga...?
Sorry att jag stressar lite, men jag är smått irriterad över att jag inte lyckas!
The_HulkMedlem sedan juni 20031 837 inlägg Jag gillar den här koden från wordPress (tror jag)
$data = array("namn"=>"Fredrik", "hobby"=>"fotboll");
$string = "Hej jag heter {namn} och gillar {hobby}";
$s = preg_replace('/\{([a-z0-9\-_]*?)\}/ise', 'isset($data[\'\1\']) ? $data[\'\1\'] : \'\'', $string);
Anpassad för dig
$data = array("namn"=>"Fredrik", "hobby"=>"fotboll");
$string = "Hej jag heter <data>namn</data> och gillar <data>hobby</data>";
$s = preg_replace('/\<data\>([a-z0-9\-_]*?)\<\/data\>/ise', 'isset($data[\'\1\']) ? $data[\'\1\'] : \'\'', $string);
Obs jag har inte testat den anpassade koden men hoppas att det blev rätt.
learnMedlem sedan jan. 20051 130 inlägg Oh, tack Hulk! Ska genast provköra.
learnMedlem sedan jan. 20051 130 inlägg
The Hulk skrev:
$data = array("namn"=>"Fredrik", "hobby"=>"fotboll");
$string = "Hej jag heter {namn} och gillar {hobby}";
$s = preg_replace('/\{([a-z0-9\-_]*?)\}/ise', 'isset($data[\'\1\']) ? $data[\'\1\'] : \'\'', $string);
Funkar hur bra som helst. Stort tack! :bire