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

5

像这样重组你的数组:

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

然后使用strtr

$contentWithEmotes = strtr($content,$emotes);
于 2013-06-03T23:12:07.163 回答
0

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

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

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

于 2013-06-03T23:17:00.540 回答