我似乎不能让这件事起作用,我希望能得到一些帮助。
我正在尝试捕获特定div的内容(请保存DOM talk,为了这个特定的目的,它并不真正发挥作用)。
问题是,如果在同一行中有另一个具有属性的div,那么它似乎无法工作。如果<div和class="myClass"之间没有匹配,我试着只指定match,但我认为我做错了。
我还是被裁判弄糊涂了。
/<div(?!>).*?class="myClass".*?>(.*?)<\/div>/mi(半)工作示例: http://regex101.com/r/cW0lW6
发布于 2014-01-15 22:51:44
试一试
/<div(?=\s)(?:(?!>).)+?class="myClass".*?>(.*?)<\/div>/si
发布于 2014-01-15 22:56:35
您不能用regex.html解析,因为不能被regex解析。Regex不是一个可以正确解析HTML的工具。
请参阅:RegEx匹配打开的标记,但XHTML自包含标记除外。
我建议使用QueryPath来解析PHP和HTML。它的语法与jQuery基本相同,只是在服务器端。
发布于 2014-01-15 23:02:01
您可以使用这个(简单的方法):
~<div[^>]+?class="myClass"[^>]*>(.*?)</div>~si或者这个(如果你有很多属性的话,更有效的方法):
~<div(?>[^>c]++|\Bc|c(?!lass=))+class="myClass"[^>]*+>(.*?)</div>~si请注意,如果div标记包含另一个div标记,则这些模式无法工作。
https://stackoverflow.com/questions/21149922
复制相似问题