愿你平安
我搜索了用图像替换文本情感
发现了一个问题,但它有一个问题
<?php
function emoticons($text) {
$icons = array(
':)' => '<img src="/images/blank.gif" alt="smile" class="emo1" />',
':-)' => '<img src="/images/blank.gif" alt="smile" class="emo2" />',
':/' => '<img src="/images/blank.gif" alt="smile" class="emo3" />',
);
return strtr($text, $icons);
}
echo "http://stackoverflow.com good site:) :-)";
?>
它输出:(我不希望它这样做)
"http<img src="/images/blank.gif" alt="smile" class="emo3" />/stackoverflow.com good site<img src="/images/blank.gif" alt="smile" class="emo1" /> <img src="/images/blank.gif" alt="smile" class="emo2" />"
我想输出
"http://stackoverflow.com good site:) <img src="/images/blank.gif" alt="smile" class="emo2" />"
我认为它应该在文本之前或之后有空格然后替换它
在另一个同样的问题中,正确的答案是
foreach($icons as $icon=>$image) {
$icon = preg_quote($icon);
$text = preg_replace("~\b$icon\b~",$image,$text);
}
但我使用它但结果没有任何图像
请帮助我,感谢stackoverflow && all :)
更新 :
我修改了功能并运行良好,但是如果我在聊天消息中使用它想听听您的意见会很好吗?还是会面临问题?
function emoticons($text) {
$icons = array(
':)' => '<img src="/images/blank.gif" class="emo1"/>',
':-)' => '<img src="/images/blank.gif" class="emo1"/>',
':/' => '<img src="/images/blank.gif" class="emo3"/>',
);
$text = " ".$text." ";
foreach ($icons as $search => $replace){
$text = str_replace(" ".$search." ", " ".$replace." ", $text);
}
return trim($text);
}
$str = ":)http://stackoverflow.com good site:) :-)";
echo emoticons($str);