通过&#34; <br/>&#34;自动替换html标签

时间:2016-08-01 15:56:54

标签: php html replace

我正在寻找一种用<br>替换html标签的方法。

函数str_replace不起作用,因为我不知道标签的属性。

输入字符串可能如下所示(例如):

$str = "line one<p class='one'>line two</p>line three<p/>line four</p>line five<br> line six<br /><p>line eight</p>";

它应该转换为:

$str = "line one<br>line two<br>line three<br>line four<br>line five<br>line six<br>line eight";

我要转换的代码是<p ....><br ... >,还有<div ....>

最好的方法是什么?

我不知道如何替换模式。

3 个答案:

答案 0 :(得分:1)

$str= "line one<p class='one'>line two</p>line three<p/>line four</p>line five<br> line six<br /><p>line eight</p>";
$str= preg_replace("/<p[^>]*?>/", "<br />", $str);
$str= str_replace("</p>", "<br />", $str);
echo $str= str_replace("<br /><br />", "<br />", $str);

答案 1 :(得分:0)

快速而肮脏的正则表达式

$str = preg_replace('#<.*?>#', '<br />', $str);

这将使用break标记替换所有标记,并且不会删除重复项。如果您想这样做,您可以更进一步,用一个实例替换多个实例。下面还添加了只应替换p br和div标签的限定符。

$str = preg_replace('#</{0,1}[p|br|div].*?>#', '<br />', $str);
$str = preg_replace('#(<br />)+#', '<br />', $str);`

更好的解决方案是像其他人所说的那样解析DOM,但是如果你想要快速简单的东西就可以了。

答案 2 :(得分:-1)

你应该写这个

$str= "line one<p class='one'>line two</p>line three<p/>line four</p>line five<br> line six<br /><p>line eight</p>";
$str = preg_replace('#</{0,1}[p|br|div].*?>#', '<br />', $str);
$str = preg_replace('#(<br />)+#', '<br />', $str);`
$str= str_replace("</p>", "<br />", $str);
echo $str= str_replace("<br /><br />", "<br />", $str);