数组中表情符号的问题

时间:2015-03-16 13:53:48

标签: php arrays emoji

在此代码中,当我使用“:-)时,表情符号不会在输出中显示。

但是当使用“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;
?>

1 个答案:

答案 0 :(得分:2)

这应该适合你:

(只需使用strtr()代替str_replace(),这样就不会多次通过字符串了)

$ret = strtr($ret, array_combine($emoji_code, $emoji_img));

输出:

  

此测试enter image description here enter image description here

另一个人没有工作,因为它替换了第一个替换的每个匹配,然后是第二个替换,依此类推。

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" >