如何在MySQL中存储转义字符并在php中显示它们?

时间:2013-03-19 20:45:11

标签: php mysql text html-escape-characters

例如,我想存储字符串“That is all”。 MySQL自动转义'字符。如何使用php从数据库中回显该String,但在转义字符前面删除\,如\'?我还想保留其他格式,如新行和空格。

3 个答案:

答案 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_*函数。您应该查看mysqliPDO

以下是一个例子:

$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