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


How to store escaped characters in MySQL and display them in php?

例如,我想存储字符串"That's all"。MySQL自动转义'字符。我如何从数据库回显字符串使用php,但删除'前转义字符像'' ?我还想保留其他格式,如新行和空格。

您是否尝试过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()文档

中也有几个很好的例子

编辑2

你看到这些的原因是因为mysql正在转义换行等等。我猜你正在使用mysql_*函数。你应该看看mysqliPDO

下面是一个例子:

$yourString = "That's all
 folks";
echo mysql_escape_string($yourString);

输出:

都是'r'n的人

如果使用预处理语句,则在插入时不会转义这些字符。

如果无法避免在输入中添加斜杠,请使用stripslashes()删除斜杠。

首先,magic_quotes_gpc转义像' or "这样的字符。您也可以在php.ini中禁用此功能。但随后你就应该逃避那些自己不知道会不会被"感染"的东西。

当转义字符串被写入数据库时。字符串不包含这些转义字符,当您再次输出它们时。你应该看到你想要的结果。

我自己更喜欢这样的方法:存储所有不转义的内容,并在输出时转义或显示内容。您还可以轻松地使用str_replace("'n", "", $text)来防止显示新闻行。

问候系统