0

我的应用程序中有几个区域有 <textarea> 标签,因此用户可以互相输入消息。一些消息的问题一直困扰着我一段时间,但我永远无法弄清楚问题是什么。我会立即打开所有消息并将它们保存在隐藏标签中。当用户“打开”消息时,来自标签的数据将被收集并显示在用户的灯箱中。出于某种原因,它不会打开其中一些消息。

我的一位用户注意到,如果您在消息中使用换行符(使用“shift+enter”),它会在尝试检索消息时破坏 Javascript。由于这只是尝试阅读消息时的问题,因此我应该能够在首先发送消息时替换它。

如何检测换行符并在提交时替换它?

str_replace(???,"/n",$string)
4

2 回答 2

2

正如您所发现的,javascript 无法处理中间字符串的换行符。也就是说,下面的输出会导致js报错……

<body onload="alert('te
st');">

您可以在虚线末尾添加反斜杠来修复此错误...

<body onload="alert('te \
st');">

正如user765476所说,您可以nl2br在文本上使用PHP的功能。但要补充的是,通常最好仅在您实际构建 html 输出时才这样做。一个原因是,如果您允许用户编辑他们已经提交的文本,他们将<br>在文本框中的任何地方看到 ',您将不得不设计另一个脚本来替换那些<br>'。

如果您真的想完全禁止用户提交换行符(以及任何可能的回车符),那么使用类似这个基本 PHP 代码的东西用一个空格替换它们......

str_replace(array("\r\n", "\r", "\n"), ' ', $message);

注意:搜索字符串的顺序很重要。第一遍替换所有"\r\n"的,第二遍替换所有剩余"\r"的,第三遍替换所有剩余"\n"的(编辑:我忘记"\r"在 IE javascript 中被识别,只是在某些其他浏览器中没有)。

于 2011-06-24T01:16:10.703 回答
0

也许这个功能 是你正在寻找的?它将换行符转换为<br/>标签。

于 2011-06-23T21:28:07.837 回答