Ik vraag me af of een * wel eens gebruikt wordt als een replacement symbool in een tekst. Dus bijv.
"Hallo *, welkom op onze site.". Of zijn er andere/beter symbolen die je hiervoor kunt gebruiken?
Ja klopt, maar de ene sprintf() gebeurt in method A en die 2e in method B. In method A bereid ik de string voor voor method B. Dus in method A is de begin-string 'dit is %s %s' en moet de string worden 'dit is %s test'. Deze geef ik dan aan method B en dan moet het 'dit is een test' worden.
Ja klopt, maar de ene sprintf() gebeurt in method A en die 2e in method B. In method A bereid ik de string voor voor method B. Dus in method A is de begin-string 'dit is %s %s' en moet de string worden 'dit is %s test'. Deze geef ik dan aan method B en dan moet het 'dit is een test' worden.
Maar als ik nu terug ga naar je eerste post, waar je * wilt gebruiken als replacement character, heb je dan niet hetzelfde probleem wanneer je string "dit is * *" is? Overigens geef je een post verder aan dat je slechts één ding hoeft te vervangen. ;-)
In dat geval zou ik het gewoon doen op een van de door Wouter beschreven manieren, dus met iets als %macro%:
<?php
$tmpl = "dit is %foo% %bar%";
$foo = 'bar';
$bar = 'foo';
$tmpl = str_replace('%foo%',$foo,$tmpl);
$tmpl = str_replace('%bar%',$bar,$tmpl);
?>
Of, korter,
<?php
$tmpl = str_replace(['%foo%','%bar%'], [$foo,$bar], $tmpl);
?>
In dat geval ga je een null value voeren aan een placeholder en dat is nooit aan te bevelen...
Eventueel zou je dus nog wel die ene %s kunnen vervangen door %s, zoals ik in een eerdere post al schreef. Je code wordt daar denk ik niet echt veel duidelijker door, maar het werkt wel.
Dit werkt:
[code]
<?php
$string = 'dit is %%s %s'; // dit is de begin-string
$string = sprintf($string, 'test'); // string moet nu worden 'dit is %s test';
$string = sprintf($string, 'een'); // string moet nu worden 'dit is een test';
?>