webForumDet fria alternativet

Replace... Hur?

9 svar · 593 visningar · startad av learn

learnMedlem sedan jan. 20051 130 inlägg
#1

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
#2

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
#3

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
#4

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
#5

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!

learnMedlem sedan jan. 20051 130 inlägg
#6

Kom igen nu, please!

The_HulkMedlem sedan juni 20031 837 inlägg
#7

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
#8

Oh, tack Hulk! Ska genast provköra.

learnMedlem sedan jan. 20051 130 inlägg
#9

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

learnMedlem sedan jan. 20051 130 inlägg
#10

En följdfråga! :)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)