字符替换:断行

时间:2011-06-23 20:59:52

标签: php character-replacement

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

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

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

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

2 个答案:

答案 0 :(得分:2)

正如您所发现的,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"编辑:我忘了{ {1}}在IE javascript中被识别,而在某些其他浏览器中则无法识别。)

答案 1 :(得分:0)

也许this function 你正在寻找什么?它会将换行符转换为<br/>标记。