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;
9 svar · 593 visningar · startad av learn
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!
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;
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?
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!
Kom igen nu, please!
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.
Oh, tack Hulk! Ska genast provköra.
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
En följdfråga! :)