【问题标题】:(PHP) Simple HTML DOM parser: HTML symbols(PHP) 简单的 HTML DOM 解析器:HTML 符号
【发布时间】:2013-03-23 18:36:01
【问题描述】:

我正在尝试从 this website 获取用户名,这就是我所做的:

$div = $html->find('div[class=micro-home-recent-review review-item]');
for ($i=0; $i<count($div); $i++){  
     $username = $div[$i]->find('div[class=tooltip-fullname]', 0)->find('b', 0)->plaintext;
     // I've tried using iconv but apparently it doesn't work
     $username = iconv(mb_detect_encoding($username), "UTF-8", $username); 
     $query = "INSERT INTO users ('name') VALUES ($username)";
     $pdo->query($query);
}

那么我数据库中新插入的记录是:

如您所见,大部分名称都是用 HTML 符号记录的,在浏览器上可以正常显示,但显示为 JSON 时就乱了。当我尝试获取评论时也会出现同样的问题,以下是评论的示例 JSON:

我需要 JSON 在我的 Android 应用程序中显示数据,因此需要解决此问题,否则数据将无法正确显示。对此有什么可能的解决方案?我真的需要你的帮助和建议。

【问题讨论】:

  • 这是您的站点(即您拥有服务器)还是您正在抓取外部站点?如果您不拥有该网站,您是否已将您的活动告知所有者?
  • 虽然不太可能与您的问题有关,但这种mb_detect_encoding 的使用是非常可疑的。您正在检测哪些可能的编码?

标签: php json html-parsing special-characters simple-html-dom


【解决方案1】:

尝试使用html_entity_decode()函数。

【讨论】:

  • 这是正确的如果实体存在于源数据中(可能,但需要证明)。
【解决方案2】:

使用htmlentities_decode() 可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    相关资源
    最近更新 更多