使用RegEx转换段落标记

时间:2010-12-29 15:30:48

标签: php regex

我需要将所有<p>标记替换为字符串中的<br />标记。 问题是<p>标记可以包含属性,例如<p align="center">所以我想删除段落的所有出现的开头标记,无论其中包含哪些属性,并替换它们与<br />

我正在使用PHP并且没有成功使用preg_replace函数获得正确的表达式。

任何帮助将不胜感激!

乔尔

2 个答案:

答案 0 :(得分:4)

preg_replace('#<p\b[^>]*>#i', '<br />', $stringContainingParas)

上面应该给你你想要的东西。它匹配任何开角支架,然后是ap或P(它在关闭分隔符后面的i不区分大小写),然后是零个或多个不是关闭角括号的字符,最后是关闭角括号。

preg_replace('#<p\b.*?>#i', '<br />', $stringContainingParas)

做同样出色的工作。它不匹配任何不是结束尖括号的字符,而是匹配任何字符,但不贪婪,以便如果在行的任何位置遇到正则表达式,则结束尖括号与正则表达式的下一部分匹配。

答案 1 :(得分:2)

假设您在>标记的属性中永远不会有<p>,您可以执行以下操作:

$result = preg_replace('/<p\b[^>]*>/s', '<br />', $subject);