Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to replace a placeholder in a string?

Tags:

php

Not very sure how to word this question but I'll give an example.

$string = 'Hey, $name. How are you?'; 

When I post this string, $name doesn't change. How can I make it so I can put something like +name+ so it changes to the name. I've tried seaching for it but I don't know what to search for so I don't have any luck. It's probably really simple but i'm just blanking out. Thanks

like image 476
Alica Kindel Avatar asked Jan 03 '12 21:01

Alica Kindel


2 Answers

You can use place-holders and str_replace. Or use PHP's built-in sprintf and use %s. (And as of v4.0.6 you can swap the ordering of arguments if you'd like).

$name = 'Alica';

// sprintf method:
$format = 'Hello, %s!';
echo sprintf($format, $name); // Hello, Alica!

// replace method:
$format = "Hello, {NAME}!";
echo str_replace("{NAME}", $name, $format);

And, for anyone wondering, I understood that is trouble templating a string, not PHP's integrated concatenation/parsing. I just assume keep this answer up though as I'm still not 100% sure this OP's intent

like image 118
Brad Christie Avatar answered Oct 16 '22 01:10

Brad Christie


I've always been a fan of strtr.

$ php -r 'echo strtr("Hi @name. The weather is @weather.", ["@name" => "Nick", "@weather" => "Sunny"]);'
Hi Nick. The weather is Sunny.

The other advantage to this is you can define different placeholder prefix types. This is how Drupal does it; @ indicates a string to be escaped as safe to output to a web page (to avoid injection attacks). The format_string command loops over your parameters (such as @name and @weather) and if the first character is an @, then it uses check_plain on the value.

like image 21
Nick Avatar answered Oct 15 '22 23:10

Nick