【发布时间】:2019-12-24 12:17:59
【问题描述】:
我正在使用 PHP Simple DOM Parser,HTML 部分按预期工作,但网页的某些内容是用 JavaScript 显示的。 JavaScript 在 HTML 页面中,不是一个单独的文件,我需要的信息很清楚,是纯文本。 JavaScript 代码是这样开始的,需要的信息在最后(位置):
<script id="state">
window.__INITIAL_STATE__ = {
"detail": {
"listingTopNavigation": {},
"isTracked": false,
"id": 30279925,
"isImported": false,
"isErotic": false,
"isMessengerEnabled": false,
"categories": [{
"name": "Musique - Instruments",
"id": 23,
"isErotic": false
}, {
"name": "Guitares & Accessoires",
"id": 697,
"isErotic": false
}, {
"name": "Electrique",
"id": 2354,
"isErotic": false
}],
"imageData": {
"baseUrl": "https:\u002F\u002Fcan01.anibis.ch\u002FElectrique-Line-6-DL-4-Delay-Modeler",
"images": ["\u002F?[size]\u002Fanibis\u002F925\u002F279\u002F030\u002FLSmd7oN9LU6lAP5EbJQXXg_1.jpg", "\u002F?[size]\u002Fanibis\u002F925\u002F279\u002F030\u002Fhn2lNMOudUmuZofpM7wrsg_1.jpg", "\u002F?[size]\u002Fanibis\u002F925\u002F279\u002F030\u002FJKBbte21vEaD7ZJqcMi_Qg_1.jpg"]
},
"title": "Line 6 DL 4 Delay Modeler",
"description": "\u003Cp\u003EVerkaufe mein Delay DL 6 in absolut neuwertigem Zustand wegen Nichtgebrauch. Das Delay habe ich im Dezember 2018 neu bei Musix gekauft und verfügt über eine tolle Auswahl an Delay Effekten, welche auf Fender Gibson Marshall oder Vox in Extraklasse daherkommen. Das Gerät ist optisch und technisch absolut neuwertig, kommt in Originalverpackung und mit dem passenden Netzadapter von Line 6. \u003C\u002Fp\u003E\n",
"price": 190,
"offerType": "Offer",
"formattedPrice": "CHF 190.–",
"formattedModified": "19.08.2019",
"details": [{
"name": "Remise",
"value": "Retrait et envoi "
}, {
"name": "Type d’annonce",
"value": "Offre"
}],
"location": {
"country": "Suisse",
"state": "Soleure",
"zipCity": "4625 Oberbuchsiten (SO)"
},
如何在 PHP 变量中获取这些值以供以后使用。
$country = $html->find(...);
$state = $html->find(...);
$zip_city = $html->find(...);
谢谢。
【问题讨论】:
-
就个人而言,我建议只使用 AJAX 来传递变量。 JS 和 PHP 永远不要混用。
-
将纯文本包装成额外的一组 { ... },然后您可以使用 json_decode 将其转换为 PHP 数据结构,以便您轻松访问属性。
-
@misorude 好主意,但我发布的代码只是整个 javascript 的一部分,你能帮我只选择这部分并单独包装吗?谢谢!
-
如果这是一个更大的 JSON 结构的一部分,它可能仍然应该被解析。您可以改为使用正则表达式在内容中四处寻找,但这并不是真正值得推荐的。你能举一个合适的例子来说明你需要从中提取的实际内容吗?
-
@misorude 好的,整个 JS 代码就是这样开始的,看看编辑后的问题。
标签: javascript php html dom domparser