我对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;
这个问题是它只显示数组中的最后一个图像,当我希望它显示它们时。 我该如何使用正确的图像显示内容?
提前感谢您的帮助。
答案 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()
解决方案更好。