Re: variable replacement in string [message #178015 is a reply to message #178009] |
Thu, 10 May 2012 16:29 |
M. Strobel
Messages: 386 Registered: December 2011
Karma:
|
Senior Member |
|
|
Am 10.05.2012 15:14, schrieb Jerry Stuckle:
> On 5/10/2012 8:44 AM, M. Strobel wrote:
>> Hi,
>>
>> I am still searching a function in PHP to execute variable replacement in strings.
>> Other languages do have this, but for PHP I can only find sprintf() and string
>> replace.
>>
>> I have
>>
>> $t = ' - solved - ';
>> $msg = 'The problem is $t';
>>
>> I want now:
>>
>> echo fxx($msg);
>>
>> print out "The problem is - solved - ".
>>
>> Please don't tell me about $msg = "The problem is $t"; just think of $msg like a
>> template read from a file.
>>
>> /Str.
>
> There's also preg_replace(), but that's a bit of overkill for something so simple.
>
> str_replace() works fine, especially since both the search and replace parameters can
> be arrays. But when using message templates, I don't use variable names - it ties
> the template tightly to the code.
>
> Rather, I use templates like:
>
> $t = ' - solved - ';
> $template = 'The problem is %PROB_STAT%';
> echo str_replace('%PROB_STAT%', $t, $template);
>
> Or, if you had the possibility of more than one string to substitute:
>
> $search = array('$PROB_STAT%');
> $replace = array($t);
> echo str_replace('%PROB_STAT%', $t, $template);
>
> Your method requires the template know that $t is the value in the program, and
> requires the program to ensure $t is defined properly in this scope. Neither is a
> good idea.
>
I see the problem of the undefined $t.
Think of my method as "do what double quotes do".
It may well not exist, maybe I file a feature request.
/Str.
|
|
|