PHP For Loop str_replace表情符号

时间:2013-06-03 23:09:15

标签: php for-loop str-replace

我对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;

这个问题是它只显示数组中的最后一个图像,当我希望它显示它们时。 我该如何使用正确的图像显示内容?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

重构你的数组:

$emotes = [
    ":)"=>"<img class='emoticon' src='smile.png' />",
    ":D"=>"<img class='emoticon' src=grin.png' />"
];

然后使用strtr

$contentWithEmotes = strtr($content,$emotes);

答案 1 :(得分:0)

每次循环都需要处理上一次的结果,而不是原始内容。

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

但是,strtr()解决方案更好。