文本解码后输出 - PHP


outputting after text is decoded - PHP

我正在构建一个应用程序,用户可以在其中将注释输入文本区域。然后,当将注释输入数据库时,将对注释进行编码。当我解码返回的值时,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吗?