在此代码中,当我使用“:-)时,表情符号不会在输出中显示。
但是当使用“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;
?>
答案 0 :(得分:2)
这应该适合你:
(只需使用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" >