我有一个PHP程序,在某些时候需要分析大量HTML + JavaScript文本来解析信息。 我想解析的所有内容都需要分成两部分。改进正则表达式,以便尽可能高效
- 独立所有的 “HTML goups” 解析
- 解析HTML各组获得所需要的信息。
在第1解析它需要找到:
<div id="myHome"
,并启动标记后捕获。然后停止捕获
<span id="nReaders"
并捕获此标记后停止的数字。
在第二次解析中,使用捕获nº1(0具有全部东西,2具有数字),然后找到 。
我已经有代码来做到这一点,它的工作原理。有没有办法改善这一点,使机器更容易解析?
preg_match_all('%<div id="myHome"[^>]>(.*?)<span id="nReaders[^>]>([0-9]+)<"%msi', $data, $results, PREG_SET_ORDER);
foreach($results AS $result){
preg_match_all('%<div class="myplacement".*?[.]php[?]((?:next|before))=([0-9]+).*?<tbody.*?<td[^>]>.*?[0-9]+"%msi', $result[1], $mydata, PREG_SET_ORDER);
//takes care of the data and finish the program
注:我需要这样一个免费的程序,所以它必须是尽可能通用,如有可能,不要使用PHP扩展
地址: 我这里ommitted一些地方,因为我没有期待像这样的答案。 还需要解析文档中的其中一个标签内的文本。它可能是第6个第7或第8个标签,但我知道它是在某个标签之后。我查过的解析器(thx profitphp)确实可以找到脚本标签。现在怎么办? 同一班级有超过1个标签。我想要他们。但我只想要也是类列表中的一个...... 我在哪里可以找到DOM解析器的指令和演示以及局限性(如http://simplehtmldom.sourceforge.net/中的那个)?我需要一些能够工作的东西,至少有大量的免费服务器。 另一件事。如何解析这部分: “php?=([0-9] +)” 与那些HTML解析器?
这个问题听起来更适合[html parser](http://stackoverflow.com/questions/292926/robust-mature-html-parser-for-php)。请参阅[答案](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags),它解释了原因。 – marcog 2010-12-22 19:44:11
作为一般规则,[不要使用正则表达式来解析HTML](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 )。 – lonesomeday 2010-12-22 19:45:36
恩,日常“如何滥用html解析正则表达式”线程。 – cbrandolino 2010-12-22 19:47:20