在这段代码中,当我使用":-)“时,表情符号不会显示在输出中。
但当使用"1f60a“或"1f60c”或"e252“表情符号时。有什么问题吗?
<?php
$emoji_url = "http://coremobile.ir/images_smileys";
$emoji_style = "";
$emoji_code = array(
":-)",
"1f60a",
"1f60c",
"e252"
);
$emoji_img = array(
'<img src="'.$emoji_url.'/1f60a.png" '.$emoji_style.'>',
'<img src="'.$emoji_url.'/1f60a.png" '.$emoji_style.'>',
'<img src="'.$emoji_url.'/1f60c.png" '.$emoji_style.'>',
'<img src="'.$emoji_url.'/e252.png" '.$emoji_style.'>'
);
$ret = 'This Test :-) 1f60a';
$ret = str_replace($emoji_code, $emoji_img, $ret);
echo $ret;
?>
发布于 2015-03-16 21:57:52
这对你来说应该是可行的:
(只需使用strtr()
而不是str_replace()
,这样它就不会多次遍历字符串)
$ret = strtr($ret, array_combine($emoji_code, $emoji_img));
输出:
此测试
另一个不起作用,因为它替换了第一次替换的每一次匹配,然后第二次替换,以此类推。
0已替换:
This Test :-) 1f60a
//^^^ match
首先更换:
This Test <img src="http://coremobile.ir/images_smileys/1f60a.png" > 1f60a
//^^^^^ match ^^^^^ match
第二次更换:
This Test <img src="http://coremobile.ir/images_smileys/<img src="http://coremobile.ir/images_smileys/1f60a.png" >.png" > <img src="http://coremobile.ir/images_smileys/1f60a.png" >
https://stackoverflow.com/questions/29078545
复制相似问题