我正试图从蒸汽市场上取价,现在这一切运作良好,并且它正在返回一个阵列,但有一个问题。 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。
如何使用正确的字符获取内容?
答案 0 :(得分:0)
使用以下代码将特殊字符替换为原始字符。
$itemprice = preg_replace('/^<!DOCTYPE.+?>/', '', str_replace( array('<html>', '</html>', '<body>', '</body>', '<p>Â </p>', '&quot;', 'Â '), array('', '', '', '', '', '"',''), $dom->saveHTML()));
查看页面源并检查替换原始字符的内容,然后再次使用str_replace()
将其替换为原始字符。