首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP :忽略HTML的结束标记

PHP :忽略HTML的结束标记
EN

Stack Overflow用户
提问于 2014-01-15 22:48:45
回答 3查看 178关注 0票数 0

我似乎不能让这件事起作用,我希望能得到一些帮助。

我正在尝试捕获特定div的内容(请保存DOM talk,为了这个特定的目的,它并不真正发挥作用)。

问题是,如果在同一行中有另一个具有属性的div,那么它似乎无法工作。如果<divclass="myClass"之间没有匹配,我试着只指定match,但我认为我做错了。

我还是被裁判弄糊涂了。

代码语言:javascript
复制
/<div(?!>).*?class="myClass".*?>(.*?)<\/div>/mi

(半)工作示例: http://regex101.com/r/cW0lW6

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-15 22:51:44

试一试

/<div(?=\s)(?:(?!>).)+?class="myClass".*?>(.*?)<\/div>/si

票数 0
EN

Stack Overflow用户

发布于 2014-01-15 22:56:35

您不能用regex.html解析,因为不能被regex解析。Regex不是一个可以正确解析HTML的工具。

请参阅:RegEx匹配打开的标记,但XHTML自包含标记除外。

我建议使用QueryPath来解析PHP和HTML。它的语法与jQuery基本相同,只是在服务器端。

票数 0
EN

Stack Overflow用户

发布于 2014-01-15 23:02:01

您可以使用这个(简单的方法):

代码语言:javascript
复制
~<div[^>]+?class="myClass"[^>]*>(.*?)</div>~si

或者这个(如果你有很多属性的话,更有效的方法):

代码语言:javascript
复制
~<div(?>[^>c]++|\Bc|c(?!lass=))+class="myClass"[^>]*+>(.*?)</div>~si

请注意,如果div标记包含另一个div标记,则这些模式无法工作。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21149922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档