我有一个文本域字段插入到mysql数据库中,其中可能包含换行符。该文本域数据意外地通过两个mysql_real_escape_string函数。因此,字段数据的换行部分现在存储为“\r\n”,而不是实际的新行,因为它已经被双重转义?
现在,当写回到文本域HTML字段进行编辑时,“\r\n”显示出来,而不是新行。
问题:如何纠正这种情况,使其再次成为新行?
现在,当写回到文本域HTML字段进行编辑时,“\r\n”显示出来,而不是新行。
问题:如何纠正这种情况,使其再次成为新行?
您可能正在使用mysql_real_escape字符串两次进行转义 - 一次作为输入过滤器(错误!),一次作为SQL数据准备。您必须摆脱第一个。
或者,作为输入过滤器使用一次,并使用预处理语句进行查询。同样要摆脱第一个。
您一定要解决导致双重转义的情况。
已经以这种方式处理的内容的快速修复方法是:
str_replace("\\r\\n", "\r\n");
试试这段代码
$tval = str_replace("\\r\\n", "\r\n",mysql_real_escape_string(trim($tval)));
mysql_real_escape_string()
或addslashes()
。同时,请确保在您的 PHP 配置中禁用了magic_quotes_gpc
。 - Lèse majesté