因此,当我将数据保存到数据库中时,PHP将在单引号或双引号上添加\。那很好。
但是,当使用json_encode()将数据传回客户端时;像麦当劳一样的文字作为麦当劳在数据库中存储,但一旦从PHP传递回js,它将编码为麦当劳
由于我使用的是jQuery,是否有任何插件可以轻松实现?或者我应该用什么函数来正确去除斜线?显然,如果有\\\\s
之类的情况,该函数应该返回\s
。 :)
对不起伙计们。我想我的问题太复杂了。我怎么做的更简单..
如果我有一个javascript变量:
var abc = "McDonald\'s";
var bcd = "I need a slash \\ ";
var cde = "save the double quote \"";
我该如何剥离\'?我应该使用什么样的正则表达式?
答案 0 :(得分:8)
实际上highly discouraged to use this "magic quotes" feature插入斜杠。通常,您永远不希望以转义格式将数据存储在数据库中;你想在输出中进行转义和编码。
答案 1 :(得分:4)
我会处理主要问题 - magic_quotes
已启用。
我会disable it并对您的数据库使用适当的转义方法。
然后你不必担心PHP 神奇地添加斜杠。
如果你在使用json_encode()
时谈论斜杠,那就是出于某种原因。
在JavaScript中使用JSON parser,您将看不到它们(除非其他内容不正确地编码它们)。
答案 2 :(得分:1)
答案 3 :(得分:1)
试试这个
function stripslashes (str) {
return (str + '').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
}
答案 4 :(得分:0)
在存储到数据库之前使用:http://au.php.net/manual/en/function.mysql-real-escape-string.php。
在写入任何用户界面之前使用这样的自定义函数:
function unescape($string)
{
$search = array("\\x00", "\\n", "\\r", "\\\x1a");
$replace = array("\x00","\n", "\r", "\x1a");
$retString = str_replace($search, $replace, $string);
$search = array("\'", '\\'.'"');
$replace = array( "'", '"',);
$retString = str_replace($search, $replace, $retString);
$search = array("\\\\");
$replace = array( "\\");
$retString = str_replace($search, $replace, $retString);
return $retString
}