Ich versuche, PHP zu verwenden, um den Steam Community Market Preis eines Artikels zu erhalten. Ich nehme eine URL (zum Beispiel: http://steamcommunity.com/market/listings/730/StatTrak%E2%84%A2%20P250%20%7C%20Steel%20Disruption%20%28Factory%20New%29) und dann lade ich den Inhalt mit file_get_contents()
. Ich habe versucht, diese zu nutzen:Holen Sie sich den Preis eines Artikels auf Steam Community Market mit PHP und Regex
function getInnerHTML($string, $tagname, $closetagname) {
$pattern = "/<$tagname ?.*>(.*)<\/$closetagname>/";
preg_match($pattern, $string, $matches);
return $matches[1];
}
Mit
getInnerHTML($str, 'span class="market_listing_price market_listing_price_with_fee"', 'span');
Ein Beispiel dessen, was ich mit file_get_contents haben kann, ist dies:
<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>
Aber es gibt nichts zurück.
Hat jemand eine Idee? XPath verwenden, um Ihre Elemente basierend auf feine Kriterien
Die Tatsache, dass Sie '. *> (. *)' In Ihrem Ausdruck anstelle eines nicht gierigen Musters verwenden und den 's' Modifikator vergessen. Es ist klar, dass Sie aufhören müssen, Regex zu verwenden und einen [robusten HTML-Parser] verwenden (http://stackoverflow.com/q/3577641) – HamZa
Sie sollten Regex für diese Aufgabe nicht verwenden, versuchen Sie stattdessen PHP DOM: http://stackoverflow.com/questions/3627489/php-parse-html-code – Robin
Ich habe versucht das PHP-DOM, aber ich kann es nicht verwenden, da jedes Element in der Liste in der span das title-Attribut hat, die für jedes Element und unterschiedlich ist Der Titel ist der Preis. Also kann ich es nicht wissen. –