PHP将文本解析为数组

时间:2012-09-14 20:06:27

标签: php parsing

我有一个HTML文件,我使用curl下载并插入到字符串中。 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 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

在php中尝试json_decode函数

答案 2 :(得分:1)

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

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

答案 3 :(得分: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来获取你的值