gpt4 book ai didi

php - 改进正则表达式语句以尽可能高效

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:51 26 4
gpt4 key购买 nike

我有一个 PHP 程序,在某些时候需要分析大量的 HTML+javascript 文本来解析信息。我要解析的所有内容都需要分为两部分。

  1. 分离所有要解析的“HTML 组”
  2. 解析每个 HTML 组以获取所需信息。

在第一次解析中它需要找到:

<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 扩展

添加:我在这里省略了一些部分,因为我没想到会得到这样的答案。还需要解析文档中某个标记内的文本。它可能是第 6 个、第 7 个或第 8 个标签,但我知道它在某个标签之后。我检查过的解析器 (thx profitphp) 确实可以找到脚本标签。现在怎么办?有超过 1 个标签具有相同的类别。我想要他们全部。但我只想要一个类(class)列表.....我在哪里可以找到 DOM 解析器的说明和演示以及限制(如 http://simplehtmldom.sourceforge.net/ 中的那个)?我需要至少可以在大量免费服务器上运行的东西。另一件事。我如何解析这部分:“php?=([0-9]+)”使用那些 HTML 解析器?

最佳答案

如果您关心效率(实际上是准确性),don't attempt to parse HTML using regex .

您应该使用解析器,例如 PHP 的 DOM

关于php - 改进正则表达式语句以尽可能高效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com