1

私はPHPにかなり慣れていないので、これについてはご容赦ください。

顔文字の配列があり、すべて for ループ内で、顔文字のテキストを正しい画像に置き換えたいと考えています。したがって、テキスト変数を取得して str_replace を実行しようとしていますが、絵文字が変更された後にテキストを表示する方法が正確にはわかりません。

これが私のコードです:

$content = ":D Here is a sample sentence for this example :)";

$emotes = array(
    [":)","<img class='emoticon' src='smile.png'>"], 
    [":D","<img class='emoticon' src='grin.png'>"],
);
for($i=0;$i<count($emotes);$i++) {
   $contentWithEmotes = str_replace($emotes[$i][0], $emotes[$i][1], $content);
}
print $contentWithEmotes;

これの問題は、両方を表示したいときに、配列の最後の画像のみを表示することです。コンテンツを正しい画像で表示するにはどうすればよいですか?

助けてくれてありがとう。

4

2 に答える 2

0

ループのたびに、元のコンテンツではなく、前回の結果を処理する必要があります。

$contentWithEmotes = $content;
foreach ($emotes as $emote) {
   $contentWithEmotes = str_replace($emote[0], $emote[1], $contentWithEmotes);
}

ただし、strtr()解決策は優れています。

于 2013-06-03T23:17:00.540 に答える