【问题标题】:PHP form inserting <br> at the end of the text on each submission to MSSQLPHP表单在每次提交到MSSQL的文本末尾插入<br>
【发布时间】:2012-10-01 16:57:55
【问题描述】:

大家好,我之前发布过关于 &lt;br&gt; 被插入到我的文本开头的帖子,我们已经解决了这个问题。 (here is my previous post with the code) 我按照

的建议更改了代码
$x = preg_replace("/<br>/i","\n",$x);

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

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

解决方案

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

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

更新

不再是每次提交时都添加&lt;br&gt;,而是在文本之后添加了两个&lt;br&gt;,它们只显示在数据库中,不会在编辑器中显示出来。我需要摆脱这些休息!

【问题讨论】:

  • 如果您删除前面的^,它将删除所有&lt;br&gt; 标签,无论位置如何。如果这太过分了,只需使用/&lt;br(\/|)&gt;$/i 作为模式添加第二个替换。
  • Giga,感谢您的回复我试过了,但它不起作用:(

标签: php sql-server


【解决方案1】:

应该这样做,匹配 &lt;br&gt;&lt;br/&gt;&lt;br /&gt; 在开头或结尾:

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

标签匹配: * 字面量&lt;br * 可选空格后跟正斜杠

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

编辑

你也可以写&lt;br(\/|)&gt;,而不是&lt;br(\s*/)?&gt;

编辑 2

只需在每个模式后面添加+即可匹配多个匹配项:

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

【讨论】:

  • 在 preg_replace 中 # 是否代表 /
  • @ZathrusWriter 是的,第一个字符作为表达式边界,但如果你愿意,你也可以将你的正则表达式包装在 {} 中:)
  • 谢谢你,我会试试这个:)
  • 仍然在末尾添加
  • @Inky1231 不,? 必须在那里,但我是否正确地看到你最后有&lt; br&gt;
猜你喜欢
  • 2021-07-21
  • 2013-10-30
  • 2014-02-04
  • 2023-04-06
  • 1970-01-01
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多