如何使用PHP解析unicode格式(例如\ u201c,\ u2014)

时间:2010-08-18 16:04:26

标签: php unicode facebook-graph-api

我从Facebook图表中提取数据,其中的字符编码如下:\u2014\u2014

是否有将这些字符转换为HTML的功能?即\u2014 -> —

如果你对这些字符代码有进一步的阅读,或者建议阅读一般的unicode,我将不胜感激。这让我很困惑。我不知道这些代码叫什么...我猜unicode,但是unicode似乎意味着很多东西。

3 个答案:

答案 0 :(得分:1)

这并不完全正确。 你如何处理含有西班牙口音的json? 有2个问题。 我制作FB.api(网址,功能(响应) ... var s = JSON.stringify(response);

并通过$ .post

将其传递给php脚本

首先我得到一个截断的字符串。我需要转义(JSON.stringify(响应)) 然后我得到一个带有西班牙口音的完整json编码字符串。 作为测试,我将它放在我用file_get_contents加载的文本文件中并应用php json_decode 并且什么也得不到。 您首先需要 utf8_encode

然后你等待你的愿望。 经过一整天的测试和谷歌没有任何结果正确解码unicode后,我找到了你的帖子。 非常感谢你。

答案 1 :(得分:0)

有人让我解决 Facebook JSON 档案中阿拉伯语文本的问题,也许这段代码可以帮助那些搜索从 Facebook(或 instagram)JSON 中读取阿拉伯语文本的人:

    $str = '\u00d8\u00ae\u00d9\u0084\u00d8\u00b5';

    function decode_encoded_utf8($string){
        return preg_replace_callback('#\\\\u([0-9a-f]{4})#ism', function($matches) { return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE"); }, $string);
    }
    echo iconv("UTF-8", "ISO-8859-1//TRANSLIT", decode_encoded_utf8($str));

答案 2 :(得分:-1)

Facebook Graph API返回JSON对象。使用json_decode()将它们读入PHP,您不必担心像\uNNNN那样处理字符串文字转义。不要尝试自己解码JSON / JavaScript字符串文字,或使用正则表达式提取所选属性。

读取字符串值后,您将拥有一个UTF-8编码的字符串。如果您的目标HTML也是UTF-8编码,则无需将(U + 2014)替换为任何实体引用。输出时只需在字符串上使用htmlspecialchars(),即可正确编码字符串中的任何<&个字符。

如果由于某种原因需要生成ASCII安全HTML,请使用htmlentities()charset arg设置为'utf-8'