字符替换:换行


Character Replacement: Break-Lines

我的应用程序中有几个领域<textarea>标记,以便用户可以相互输入消息。一些信息的问题困扰了我一段时间,但我永远不知道问题出在哪里。我会一次打开所有的消息,并将它们保存在隐藏的标签中。当用户"打开"消息时,来自标记的数据将被收集并显示在用户的灯箱中。出于某种原因,它不会打开其中一些消息。

我的一位用户注意到,如果你在消息中使用换行符(使用"shift+enter"),当Javascript试图检索消息时,它会打断它。由于这只是在尝试读取消息时出现的问题,因此我应该能够在最初发送消息时替换它。

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

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

正如您所发现的,javascript无法处理字符串中间的换行符。换句话说,以下输出将导致js错误。。。

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

你可以在虚线的末尾添加一个反斜杠来修复这个错误。。。

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

正如user765476所说,您可以对文本使用PHP的nl2br函数。但要补充的是,通常最好只有在实际构建html输出时才这样做。其中一个原因是,如果你允许用户编辑他们已经提交的文本,他们会在文本框中到处看到<br>,你必须设计另一个脚本来替换这些<br>

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

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

注意:搜索字符串的顺序很重要。第一遍替换所有的"'r'n",第二遍替换任何剩余的"'r",第三遍替换任何其余的"'n"编辑:我忘了"'r"在IE javascript中可以识别,只是在某些其他浏览器中无法识别)。

也许这个函数你在找什么?它将换行符转换为<br/>标记。