2012-01-03 13 views
8

この質問にどのように言い方をするのか分かりませんが、例を挙げます。 $ string = 'おい、$名前。お元気ですか?'; この文字列を投稿すると、$ nameは変更されません。どうすれば私は+ name +のような名前を付けて名前に変えることができるのですか?私はそれのためのseachingを試みたが、私は何を検索するか分からないので、私は運がない。それはおそらく本当に簡単ですが、私はただ空白にしています。文字列のプレースホルダを置き換える方法は?

$name = "Alica"; 
$string = "Hey, $name. How are you?"; // Hey, Alica. How are you? 

See the documentation:あなたは、変数に拡張することを望む場合 おかげ

+0

基本的なPHP構文:http://php.net/manual/en/language.types.string.php –

答えて

15

プレースホルダとstr_replaceを使用できます。 PHPの組み込みのsprintfを使用し、%sを使用してください。 (v4.0.6では、必要に応じて引数の順序を入れ替えることができます)。

$name = 'Alica'; 

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

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

そして、誰もが不思議のために、私はそれが文字列ではなく、PHPの統合連結/解析をテンプレート化のトラブルです理解。私はちょうど私がまだこのOPの意図

+0

thats私が探していたもの、str_replace();ありがとう。私の人生はそれを理解することができませんでした。 –

+0

@Alica:問題ありません。以前の回答を承認するだけでなく、将来の訪問者のためのリソースとなり、他の人があなたにもっと役立つことを望むようになります)。 –

+0

'とv4.0.6の時点で...' 'あなたが人々がPHP 4よりも低いものを使っていると思っているので、それを言及していないことを願っています;) –

6

あなたは二重引用符(")で文字列をラップする必要があります。

+0

クリーンでシンプルな、素晴らしい。 –

0

第三の溶液を100%わからないよう、何良くも悪くも、前述より、連結したものですけれども、この答えを維持しないと仮定します。

echo 'Hello '. $name .'!!!';

5

Iいつもstrtrのファンだった。

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

他の利点は、異なるプレースホルダプレフィックスタイプを定義できることです。これはDrupalのやり方です。 @は、(注入攻撃を避けるために)Webページに出力するために安全なものとしてエスケープされる文字列を示します。 format_stringコマンドはパラメータ(たとえば@nameおよび@weather)をループし、最初の文字が@であれば、その値にcheck_plainを使用します。

+1

これは良い答えです。これはまた、str_replaceが遭遇するいくつかの落とし穴を避けるためです:http://php.net/manual/en/function.strtr。 PHP#117169 –

関連する問題