我正在构建一个应用程序,用户可以在其中将注释输入文本区域。然后,当将注释输入数据库时,将对注释进行编码。当我解码返回的值时,nl2br 函数不起作用。它不会将 ''r' 替换为 br 标记。当不编码/解码文本时,它可以工作。
我使用以下代码对我的信息进行编码/解码:http://www.myphpscripts.net/tutorial.php?id=9
如果我进入文本区域:
Hello
World
它对其进行编码,然后在解码时返回
Hello'r'nWorld.
我可以做一个str_replace,但据我了解,根据浏览器的不同,文本区域可能会使用 ' 或 ''r 而不是 ''r'。
不确定什么是好的解决方案...请帮忙!谢谢!
如果要转换的文本位于"
如果要转换要放置在文本区域中的文本,请使用...
str_ireplace("'r'n", "'n", $db_string); //or something similar
如果要转换要放置在文本区域之外的文本,请使用...
str_ireplace(array("'r'n", "'n", "'r"), '<br />', $db_string);
单独的浏览器使用任何内容,但我相信它们都可以读取"'"。 但是,在旁注中,操作系统确定"''r'"与"'"。 只需使用"'"。 因此,将"''r'"替换为"'"。 或者只保留"''r'",使用其中任何一个,只要您不将 br 标签放入您的文本区域标签中,您就可以完成所有设置。
Mac = Linux = '视窗 = ''r'
我已经使用 zend studio 7.2.0 在 Windows 操作系统中检查了您的解码字符串Hello'r'nWorld.
。我发现 nl2br() 在两种情况下都工作正常'r'n and 'n
.您应该仔细检查解码的字符串。可能是你在编码之前正在做 addslashes()。如果是这样,那么在使用 nl2br() 之前,你必须使用 stripslashes()。
您可以使用
stripslashes($text)
来剥离它们。但是,我建议找出添加斜杠的原因。你用addslashes
吗?