【问题标题】:JSON from twitter API contains \u2019来自 twitter API 的 JSON 包含 \u2019
【发布时间】:2011-05-11 20:10:18
【问题描述】:

这是我通过 twitter API 获得的 JSON 文件的一部分:

"text":"科学家发现研究分子的新方法:女王的研究人员发现了研究分子的方法...http://bit.ly/chbweE"

我正在为我的项目使用 PHP。

使用json_decode函数后,\u2019被转换成’,基本上真的很烦。

我尝试使用$raw_json = preg_replace("u2019","'",$raw_json),但随后json_decode 函数返回NULL。

还有其他方法可以将 \u2019 转换为 ' 吗?

谢谢


编辑:

这就是我获取 JSON 的方式:

// create curl resource
    $ch = curl_init();

    // set url
    curl_setopt($ch, CURLOPT_URL, "http://search.twitter.com/search.json?q=from%3Agizmodo&rpp=10");

    //return the transfer as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // $output contains the output string
    $raw_json = curl_exec($ch);

    // close curl resource to free up system resources
    curl_close($ch);

【问题讨论】:

  • 请提供描述如何通过twitter API获取内容的方法/函数,简而言之,是编码问题,很多原因会引入乱码,例如页面编码
  • 我正在使用搜索 API...所以search.twitter.com/search.json
  • 使用twitter、curl、fopen、socket的方法有很多...可以更具体一点吗?或为内容抓取输入特定代码
  • 值得一提的是,我正在使用 php 中的 cURL 函数执行搜索
  • 没有问题,请将页面编码改为UTF-8,看看是否还有问题

标签: php mysql json twitter


【解决方案1】:

您在preg_replace 中缺少正则表达式分隔符/.../。试试:

$raw_json = preg_replace("/u2019/","'",$raw_json);

另外,为了更安全,我只会替换那些实际上是转义字符的实例:

$raw_json = preg_replace("/\\\\u2019/","\\'",$raw_json);

【讨论】:

  • 您是否有理由在此特定实例中使用 preg_replace 而不是 str_replace
  • @beanland:不是真的,我只是使用了 OP 在问题中发布的内容,但str_replace 就可以了。
【解决方案2】:

这可能是您在输出中使用的字符集的问题。如果您要输出到 HTML 页面,请尝试将以下元标记添加到您的 head 部分:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

【讨论】:

  • 谢谢,你是英雄。你不知道那行代码对我的网站有多重要。如果你想看看,这里是链接:http://bloging.net16.net/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 2017-02-10
  • 2011-10-09
  • 2013-08-06
  • 2011-10-14
  • 1970-01-01
相关资源
最近更新 更多