Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当相同的元素类型嵌套在外部HTML元素中时,如何使用正则表达式捕获外部HTML元素?_Php_Html_Regex_Parsing_Capture - Fatal编程技术网

Php 当相同的元素类型嵌套在外部HTML元素中时,如何使用正则表达式捕获外部HTML元素?

Php 当相同的元素类型嵌套在外部HTML元素中时,如何使用正则表达式捕获外部HTML元素?,php,html,regex,parsing,capture,Php,Html,Regex,Parsing,Capture,我试图用正则表达式捕获HTML的某些部分,但遇到了一个我不知道如何解决的情况 我得到了一个如下的HTML片段: <span ...> .... <span ...> ... </span> ... </span> 这将捕获一个给定的起始标记以及直到相同类型的结束标记的所有内容 但是,在上述情况下,这将捕获开始的和下一个结束时遇到的所有,因此我得到的是: <span ...> .... <span ...> ... <

我试图用正则表达式捕获HTML的某些部分,但遇到了一个我不知道如何解决的情况

我得到了一个如下的HTML片段:

<span ...> .... <span ...> ... </span> ... </span>
这将捕获一个给定的起始标记以及直到相同类型的结束标记的所有内容

但是,在上述情况下,这将捕获开始的
和下一个结束时遇到的所有
,因此我得到的是:

<span ...> .... <span ...> ... </span>
。。。
也就是说,外部开始标记,然后是内部跨度的开始标记,然后是内部跨度的结束标记,这当然不是我想要的

我真正想要的是外部
元素,包括内部嵌套的
元素

有什么切实可行的方法来实现这一点吗

注意:使用XML解析器解析HTML可能不是一个选项,因为我正在处理的HTML是来自MS FrontPage的旧的、非常破碎的HTML4,任何解析器都会阻塞它

谢谢你的帮助

显然,“正确”的答案是使用DOM解析器而不是正则表达式,但是您说您的标记对于解析器来说太破碎了

不过,在使用正则表达式之前,先看看它是否有意义。与基于PHP DOM的解析器相比,它对损坏的标记更为宽容。

显然,“正确”的答案是使用DOM解析器而不是正则表达式,但是您说您的标记对于解析器来说太过损坏


不过,在使用正则表达式之前,先看看它是否有意义。与基于PHP DOM的解析器相比,它对损坏的标记更为宽容。

感谢提供该库。我期待着尝试一下!谢谢你的图书馆。我期待着尝试一下!哦,当我说“捕获”时,我的意思是“匹配”。你可以(按钮朝向问题的左下角)。我猜@Tom指的是您正试图用正则表达式解析html/xml的事实。你读了吗?好吧,我想我今天学到了一些东西。谢谢哦,当我说“捕获”时,我的意思是“匹配”。你可以(按钮朝向问题的左下角)。我猜@Tom指的是您正试图用正则表达式解析html/xml的事实。你读了吗?好吧,我想我今天学到了一些东西。谢谢
<span ...> .... <span ...> ... </span>