1

我正在构建一个应用程序,用户可以在其中将注释输入文本区域。然后在输入数据库时​​对注释进行编码。当我解码返回值时,nl2br 函数不起作用。它不会用 br 标签替换 \r\n 。当不编码/解码文本时,它可以工作。

我正在使用以下代码对我的信息进行编码/解码:http ://www.myphpscripts.net/tutorial.php?id=9

如果我进入一个文本区域:

Hello  
World

它对其进行编码,然后在解码时返回

Hello\r\nWorld.

我可以执行 str_replace,但据我了解,根据浏览器的不同,textarea 可能使用 \n 或 \r 而不是 \r\n。

不知道什么是好的解决方案......请帮忙!谢谢!

4

3 回答 3

3

如果您要转换的文本位于“<textarea>”中,请不要使用“<br />”。

如果要将文本转换为放置在文本区域中,请使用...

str_ireplace("\r\n", "\n", $db_string); //or something similar

如果要将文本转换为放置在文本区域之外,请使用...

str_ireplace(array("\r\n", "\n", "\r"), '<br />', $db_string);

Separate browsers use whatever, but I believe they all can read just "\n". However on a side note, the operating system determines "\r\n" vs "\n". Just use "\n". So replace "\r\n" with "\n". Or just leave "\r\n", use either, as long as you don't put br tags into your textarea tags you'll be all set.

Mac = Linux = \n Windows = \r\n

于 2012-04-26T16:51:58.247 回答
0

我已经Hello\r\nWorld.使用 zend studio 7.2.0 在 Windows 操作系统中检查了您的解码字符串。我发现 nl2br() 在这两种情况下都可以正常工作\r\n and \n。你应该仔细检查你解码的字符串。可能是您在编码之前正在执行addslashes()。如果是这样,那么您必须在使用nl2br() 之前使用stripslashes()。

于 2012-04-26T16:35:28.260 回答
-1

你可以stripslashes($text)用来剥离那些。但是,我建议找出添加斜线的原因。你在用addslashes吗?

于 2012-04-26T16:11:13.930 回答