我需要将所有<p>
标记替换为字符串中的<br />
标记。
问题是<p>
标记可以包含属性,例如<p align="center">
所以我想删除段落的所有出现的开头标记,无论其中包含哪些属性,并替换它们与<br />
。
我正在使用PHP并且没有成功使用preg_replace
函数获得正确的表达式。
任何帮助将不胜感激!
乔尔
答案 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);