【发布时间】:2014-05-28 03:39:00
【问题描述】:
我正在尝试使用 PHP 来获取物品的 Steam 社区市场价格。我获取一个 url(例如:http://steamcommunity.com/market/listings/730/StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29),然后使用file_get_contents() 下载内容。我试着用这个:
function getInnerHTML($string, $tagname, $closetagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$closetagname>/";
preg_match($pattern, $string, $matches);
return $matches[1];
}
使用
getInnerHTML($str, 'span class="market_listing_price market_listing_price_with_fee"', 'span');
我可以使用 file_get_contents 的一个例子是:
<span class="market_table_value">
<span class="market_listing_price market_listing_price_with_fee">
$1.92 </span>
<span class="market_listing_price market_listing_price_without_fee">
$1.68 </span>
<br/>
</span>
但它什么也没返回。
有人有想法吗?
【问题讨论】:
-
您在表达式中使用
.*>(.*)而不是非贪婪模式并且忘记了s修饰符这一事实。很明显,您需要停止使用正则表达式并使用robust html parser -
你不应该使用正则表达式来完成这个任务,尝试使用 PHP 的 DOM:stackoverflow.com/questions/3627489/php-parse-html-code
-
我尝试了 PHP 的 DOM 但我不能使用它,因为列表中的每个项目在 span 中都有 title 属性,每个项目都不同,标题是价格。所以我不知道。
-
@ThomasPatKowalski-Zuckerberg:我不确定你的意思。您可以编辑您的问题以添加示例输入吗?
-
好的,我刚刚添加了一个示例 HTML 代码。