2011-02-24 16 views
0

str_replaceをreplace {$name}に$ user ['name']と使用していますが、dbの1番目のエントリを置き換えるだけです.20人のユーザーがあり、1番目のエントリが 'tester'唯一の第一エントリで{$名}は、以下の私たちのコードをチェックし...foreachループ内のstr_replace

foreach($users as $user) { 
$content = str_replace('{$name}', $user['name'], $content); 
$msg = '<div class="message">'.$content.'</div>'; 
} 
+0

$ content変数に同じ行が20行ありますか?そして、貧困層のユーザは、カスタムグリーティングを設定するために20人すべてを編集する必要がありますか? –

+0

あなたは検索する価値として{$ name}を持っています。これは、PHPのインライン変数挿入と同じ構文です。 {$ name}が何か間違った方向に翻訳されることがありますか?マクロを[名前]のような単純なものに変更してみてください。または、 '\ {\ $ name \}'の区切りにすることもできます。また、後で何をしているのかわかりません。あなたは$ msgを上書きすることができますが、それは最後のエントリのためだけに動作すると思います。 – Ali

答えて

-1

あなたは、唯一の発生を置き換えたい場合は、関数呼び出し

foreach($users as $user) { 
    $count = 1; 
    $new_content = str_replace('{$name}', $user['name'], $content,$count); 
    $msg = '<div class="message">'.$new_content.'</div>'; 
} 

Manual entry for str_replace

上の$ countパラメータを使用します
+0

@mabwi返信ありがとうございます、あなたは問題が何だったか教えてください。ありがとう。 – seoppc

+0

あなたは$ new_contentではなく$ contentに固執する必要があります。また、ループから$ msgを削除する必要があります。Btw、$ contentには{$ name}変数の数が分かっていますか?これを達成するための正しい方法ではありません... – Capsule

+0

問題はstr_replaceがデフォルトで "greedy"です。すべての{$ name}を最初の$ nameに置き換えます。もう一度ループすると、ループの前のステップですべてが置換されただけなので、{$ name}は使用できなくなります。 – Capsule