我有一个PHP程序,在某个时候,需要分析大量的HTML+javascript文本来解析信息。我想要解析的东西需要分为两部分。
在第一个解析中,它需要找到:
<div id="myHome"
然后开始捕捉那个标签。那就停止捕捉之前
<span id="nReaders"
捕捉这个标签后面的号码然后停止。
在第二个解析中,使用捕获编号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扩展。
补充:我在这里省略了一些部分,因为我没想到会有这样的答案。还需要在文档中的一个标记中解析文本。它可能是第六、第七或第八标记,但我知道它是在某个标签之后。我检查的解析器()确实可以找到脚本标记。现在怎么办?有多个标签具有相同的类。我想要所有的。但我只想要一份课程清单……在哪里可以找到DOM解析器的指令、演示和限制(就像http://simplehtmldom.sourceforge.net/中的那样)?我需要的东西,将工作,至少,大量的免费服务器。还有一件事。我如何解析这个部分:"php?=(0-9+)“和那些HTML解析器?
发布于 2010-12-22 11:47:59
如果您关心的是效率(甚至是准确性),不要尝试使用regex解析HTML。
您应该使用解析器,例如PHP的DOM
发布于 2010-12-22 11:47:25
如前所述,regex并不适合这样做。你最好用这样的方法:
发布于 2010-12-22 12:35:47
效率并不重要,如果你的结果是不正确的。使用regexes解析HTML将导致不正确的结果。使用解析器。
https://stackoverflow.com/questions/4513038
复制