正则表达式为PHP来找到所有的自我

我有一个使用DomDocumentFragment的系统,它基于数据库或系统其他区域(即其他XHTML代码)的标记创建。

一个可能包含的标签是:

<div class="clear"></div>

在将字符串添加到DomDocumentFragment之前,内容是正确的 - 类正确关闭。

但是,DomDocumentFragment将其转换为:

<div class="clear"/>

由于标签的错误关闭,这在浏览器中无法正确显示。

所以我的想法是后处理DomDocument返回给我的XML字符串(包括不正确的div结构,如上所示),并将自关闭标签转换回其正确的结构...即返回到。

但是我在preg_match中找到这些标签的模式有问题 - 我已经看到了一些返回所有标签(即查找所有标签)的模式,但不仅仅是那些自闭合的模式。

我尝试了一些东西,但是我的头脑和正则表达式有点混淆(我开始过度复杂的事情)

/<div(["dws])/>/

目标是匹配模式,其中“....”可以是任何有效的XHTML属性。

任何建议或指示让我回到正轨?


限制问题域 - 您需要将<div class="clear"/>更改为<div class="clear"></div> ...以便搜索前者,并用后者直接替换后者找到并替换操作。 它应该更快,它肯定会更安全

无论你做什么,都不要试图用正则表达式解析HTML(你正在试图通过构建一个可以检测具有任意属性的<div>的正则表达式来执行此操作。)


<div></div>

到一个DomDocumentFragment实际上并没有改变它

<div/>

它将它变成

A-DOM-Element-Node-with-name-"div"-and-no-content.

只有当序列化DomDocumentFragment时,才会创建<div></div><div/> 。 换句话说,问题不在于DomDocumentFragment,而在于使用的序列化过程。

PHP不是我的语言,所以我不能提供更多的帮助,但我会为您的DomDocumentFragment寻找一个兼容HTML的序列化程序,而不是尝试在序列化之后修补输出。

链接地址: http://www.djcxy.com/p/18981.html

上一篇: regex for php to find all self

下一篇: HTML: Include, or exclude, optional closing tags?