【发布时间】:2015-10-21 12:23:21
【问题描述】:
我在选择各种 HTML 内容方面的技能还不错。因此,所有人都自信地创建了一些应该翻录网站内容的代码,我偶然发现了一些奇怪的 JavaScript 代码,源代码在其中标价。
<script>
var productConfig = {"attributes":{"178":{"id":"178","code":"bp_flavour","label":"Smaak","options":[{"id":"28","label":"Aardbeien","oldPrice":"0","products":["2292","2294","2296","2702"]}
....更多的胡言乱语,每个产品变体超过 4 个:(所以像这样的 80 个不同的行:)
,"childProducts":{
"2292":"price":"64.99","finalPrice":"64.99","no_of_servings":"166","178":"27","179":"34"},
"2292":"price":"17.99","finalPrice":"17.99","no_of_servings":"33","178":"28","179":"25"}
}
</script>
显然 2292 是手头产品的 ID。我想读出“finalPrice”。
我的 PHP 代码:
$file = $this->curl_get_file_contents($url);
$doc = new DOMDocument();
@$doc->loadHTML($file);
$doc->preserveWhiteSpace = false;
$finder = new DomXPath($doc);
$price_query = $finder->query("//script[contains(.,'finalPrice')]");
$price_raw = $price_query->item(0)->nodeValue;
但是,我的查询 //script[contains(.,"finalPrice")] 爆出整个脚本,但我无法找到更深入、更具体地挖掘 JavaScript 的方法。有谁知道更多/可以给我一个提示吗?
【问题讨论】:
-
请发布您的代码。
-
嘿,我把它编辑得更具体了
-
=右侧的表达式看起来像 JSON,因此使用 php.net/manual/en/function.json-decode.php 解析它可能比使用正则表达式更好。 -
当然。假设它是 JSON,然后使用 XPath 将其读取为字符串,然后将其放入 JSON 解析器中。
-
Json decode 是这里的主人。谢谢
标签: javascript php dom xpath selector