为了保留多个换行符,我这样做:
$tempCONTENT = mysqli_real_escape_string($con, $_POST['promotion_content']);
$tempCONTENT = str_ireplace(array("\r\n","\r","\n",'\r','\n'),'<br />', $tempCONTENT);
$previewFORMATTED = str_ireplace(array('<br /><br />'),'<br />', $tempCONTENT);
echo $previewFORMATTED;
这用于处理文本区域表单域。它保留了用户输入的换行符的数量,将它们从 \r\n 更改为 [br /]
我使用它来显示输入,以便用户可以在我将其添加到数据库之前对其进行检查。使用两个提交按钮,一个用于检查,另一个用于提交,但不会这样做。它只是使用 mysqli_real_escape_string 添加数据
然后,我使用 str_ireplace 将正确数量的 [br /] 转回 \r\n,以便我可以将结果回显到文本区域,以便他们轻松编辑。
所以我的最终代码如下所示:
$tempCONTENT = mysqli_real_escape_string($con, $_POST['promotion_content']);
$tempCONTENT = str_ireplace(array("\r\n","\r","\n",'\r','\n'),'<br />', $tempCONTENT);
$previewFORMATTED = str_ireplace(array('<br /><br />'),'<br />', $tempCONTENT);
echo $previewFORMATTED;
$formOUTPUT = str_ireplace(array('<br />'),"\r\n", $previewFORMATTED);
我已经在 Safari 和 Chrome 上进行了测试,它运行良好。我没有测试过 IE,但在 IE 上没有任何效果!
但我确实发现了另一个问题。如果用户像这样输入 HTML:
<h1>heading</h1><p>some text</p>
没关系,但如果他们执行以下操作(更有可能)
<h1>heading</h1>
<p>some text</p>
然后我在标题和段落之间得到一个巨大的空间。
我试图用这段代码修复它:
$tempCONTENT = str_ireplace(array(">\r\n<",">\r<",">\n<",'>\r<','>\n<'),'><', $tempCONTENT);
但这不起作用:(我仍然得到巨大的差距,因为它在 h1 和 p 标签之间添加了一个额外的 [br /]。
现在我只是告诉他们不要在 html 标记之间添加换行符,结果应该很好:)
我希望有人发现这很有用。