例如,我想存储字符串“That is all”。 MySQL自动转义'字符。如何使用php从数据库中回显该String,但在转义字符前面删除\,如\'?我还想保留其他格式,如新行和空格。
答案 0 :(得分:1)
如果您使用预准备语句,那么这些字符在插入时不会被转义。
如果无法避免在输入上添加斜杠,请使用stripslashes()
删除斜杠。
答案 1 :(得分:1)
您是否尝试stripslashes()
,关于换行符只需使用nl2br()
功能。
示例:
$yourString = "That\'s all\n folks";
$yourString = stripslashes(nl2br($yourString));
echo $yourString;
注意:\\
双斜杠将转为\
单斜杠
您应该设置自己的功能,例如:
$yourString = "That\'s all\n folks";
function escapeString($string) {
return stripslashes(nl2br($string));
}
echo escapeString($yourString);
nl2br()
docs
修改2
你看到这些的原因是因为mysql正在逃避换行等等。我猜你正在使用mysql_*
函数。您应该查看mysqli
或PDO
。
以下是一个例子:
$yourString = "That's all
folks";
echo mysql_escape_string($yourString);
输出:
那就是\ r \ n大家
答案 2 :(得分:-1)
首先,magic_quotes_gpc会像'或'那样转义字符。你也可以在你的php.ini中禁用它。但是你应该自己逃避这些事情,没有任何查询可以被“感染”。 查看mysql注入以获取更多信息。
当您的数据库中已写入转义字符串时。该字符串不包含这些转义字符串,当您再次输出它们时。你应该看到你想要的结果。
我自己更喜欢这种方法,通过存储没有转义的所有内容,并在输出时转义或显示内容。您还可以轻松使用str_replace("\n", "", $text)
来阻止显示新闻。
问候MRu