0

大家好,我之前发布过关于<br>在我的文本开头插入的内容,我们已经解决了这个问题。(这是我以前的代码帖子)我按照建议更改了代码

$x = preg_replace("/<br>/i","\n",$x);

   $x = preg_replace("/^<br(\/|)>/i","\n",$x);

这可以阻止<br>在开头插入,但现在它在末尾插入一个。我该如何阻止这种情况发生?

解决方案

$x = preg_replace("/^<br(\/|)>/i","\n",$x);
千斤顶解决方案---//$x = preg_replace('#^<br(\/|)>+|<br(\/|)>+$#i', "\n", $x);
除了原始 preg_replace 之外的我的修复

$x= preg_replace("/(^)?(<br\s*\/?>\s*)+$/","\n", $x);

更新

它不再在<br>每次提交时添加,但现在<br>在文本之后有两个仅显示在数据库中并且没有在编辑器中显示。我需要摆脱这些休息!

4

1 回答 1

1

这应该这样做,匹配<br><br/>或者<br />在开始或结束:

preg_replace('#^<br(\s*/)?>|<br(\s*/)?>$#i', "\n", $str);

标签匹配: * 文字<br * 可选空格,后跟正斜杠

中间|的 用于表示替代条件(即OR)。

编辑

代替<br(\s*/)?>你也可以写<br(\/|)>你以前的。

编辑 2

+只需在每个模式后面添加即可匹配​​多次出现:

preg_replace('#^<br(\/|)>+|<br(\/|)>+$#i', "\n", $str);
于 2012-10-01T17:04:23.883 回答