0

我有一个使用 curl 下载并插入字符串的 HTML 文件。HTML 文件有很多内容,但我希望解析文档的某个部分并将该部分插入到数组中。棘手的部分是我试图解析的部分不是 HTML,它是 JavaScript 块中的代码:

 <!-- script block -->
 <script type="text/javascript" src="//external.site.com/76b07.js"></script>
 <script>....code.....
 "235533":{"itemId":"235533","type":"0","image":{"url":"thispic.jpg"}:"summary":"This Item"},
 "235534":{"itemId":"235534","type":"1","image":{"url":"thisotherpic.jpg"}:"summary":"This Other Item"},
 </script>

如何将项目信息作为数组导入?:

$array = array( "itemId" => "235533", "type" => "0", "image" => "thispic.jpg", "summary" =>"This Item" );
4

5 回答 5

6

您可以使用 RegExp 来匹配"....":{....}位于<script>标签之间的位置。您感兴趣的字符串是JSON变量。
将每个 json 变量都包含在字符串中后,您可以尝试使用json_decode()

$json_string = '"235533":{"itemId":"235533","type":"0","image":{"url":"thispic.jpg"}:"summary":"This Item"}';
$json = json_decode($json_string);
$myArray = (array)$json;
于 2012-09-14T20:08:28.897 回答
2

在 php 中尝试 json_decode 函数

于 2012-09-14T20:09:14.243 回答
1

您首先需要弄清楚如何使用您可以使用的任何字符串搜索方法来隔离数据结构,这些方法即使在数据更改时也是可重复的。如果没有关于数据结构内容的进一步上下文,很难说这可能是什么——即在所有情况下什么是相同的,什么是不同的。

然后,您最终会json_decode像其他人建议的那样获得数据字符串和它们。

于 2012-09-14T20:12:23.733 回答
0

使用爆炸。例如,像

$array = explode('","', $string);

那会接近你想要的。

编辑: 看起来更适合你。

于 2012-09-14T20:11:16.527 回答
0

使用正则表达式匹配它们

preg_match_all('/[0-9]+":{"itemId":"(?P<itemId>[0-9]*)","type":"(?P<type>[0-9]{1})","image":{"url":"(?P<image>.*)"}:"summary":"(?P<summary>.*)}/',$mystring,$elements,PREG_SET_ORDER);

然后遍历 $elements 以获取您的值

于 2012-09-14T20:27:49.447 回答