奇怪的角色出现了

时间:2016-06-28 11:21:26

标签: php domdocument domxpath

我正试图从蒸汽市场上取价,现在这一切运作良好,并且它正在返回一个阵列,但有一个问题。 CS:GO项目(例如StatTrak项目或刀具)可以是星号(或Valve如何发送它" \u2605")或商标徽标(或Valve如何发送它" \u2122")

我的数组并未将它们视为这些字符,而是将其转换为此字符:

â StatTrak⢠Karambit | Damascus Steel (Field-Tested)

但它应该是:

★ StatTrak™ Karambit | Damascus Steel (Field-Tested)

这是我获取信息的方式:

    $url = "https://steamcommunity.com/market/search/render/?query=&start=0&count=99&&search_descriptions=0&sort_column=price&sort_dir=popular&appid=730&category_730_ItemSet%5B%5D=any&category_730_ProPlayer%5B%5D=any&category_730_StickerCapsule%5B%5D=any&category_730_TournamentTeam%5B%5D=any&category_730_Weapon%5B%5D=any";
    $html = file_get_contents($url);
    $html = json_decode($html, true);
    $html = $html['results_html'];

    $dom = new DOMDocument;
    @$dom->loadHTML($html);
    $xpath = new DOMXpath($dom);
    $itemname = $xpath->query('//span[@id="result_' . $q . '_name"]');
    $itemprice = $xpath->query('//*[@id="result_' . $q . '"]/div[1]/div[2]/span[1]/span[1]');

在一个循环中,当然,但现在不重要。 $q的范围是0-99。

如何使用正确的字符获取内容?

1 个答案:

答案 0 :(得分:0)

使用以下代码将特殊字符替换为原始字符。

 $itemprice = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>', '<p>&Acirc;&nbsp;</p>', '&amp;quot;', '&Acirc;&nbsp;'), array('', '', '', '', '', '"',''), $dom->saveHTML()));

查看页面源并检查替换原始字符的内容,然后再次使用str_replace()将其替换为原始字符。