我工作的一个应用程序,用户可以创建HTML模板,并将其保存到database.The模板包括像文本,图像不同成分的etc.When我尝试保存文本用单引号'
它给了我mysql_error
(显然)。于是,我就向mysqli_real_escape_strings
nulify it.It工作,但我想找回用于编辑的保存的内容和撇号的使用\
(斜杠)。所以内容在内部修改,不再是一个有效的HTML编辑和逃脱浏览器抛出一个语法错误。
我也试过转义搜索等功能和跨json_encode
来到但那不是由MySQL接受。
有人能指出我哪会做这在PHP的任何功能?请建议,将执行任务给我的功能!
更新:
function saveContent(){
var $getContent = $('#mainWrap').clone();
$getContent.find('.textBox, .pictureBox').removeAttr('id');
var saveContent = $getContent.wrap('<div></div>').html();
console.log(saveContent);
var getBodyStyle=$('body').attr('style');
console.log('this is body style'+getBodyStyle);
var auto="auto";
$.ajax({
url:"auto_save.php",
type:"POST",
dataType:"text",
//data:"txtComp="+saveContent+"&auto="+auto+"&pageId="+pageId+"&webId="+webId+"&userId="+userId+"&bodyStyle="+getBodyStyle,
data: {txtComp: saveContent, auto: auto, pageId: pageId,webId:webId,userId:userId,bodyStyle:getBodyStyle}
});
}
我添加了mysql_real_escape_string
在我auto_save.php
。现在,当我把它拿来从DB回来,我都要将它传递给这样的JavaScript变量。
var getSavedContent = <?php echo json_encode($IdLessContent); ?>;
这可以是一个问题?
stripslashes()
将从任何字符串中删除斜线,并输出转义的数据时是有用的。
我相信你需要使用:
json_encode($IdLessContent, JSON_UNESCAPED_SLASHES);
与UNESCAPED_SLASHES的一部分,你的数据应该正确地返回。
该monkeymatrix答案是不正确的最近版本的PHP(我测试7.3)。 mysqli_real_escape_string()
只逃脱某些字符。这里是将扭转它的功能:
function reverse_mysqli_real_escape_string($str) {
return strtr($str, [
'\0' => "\x00",
'\n' => "\n",
'\r' => "\r",
'\\\\' => "\\",
"\'" => "'",
'\"' => '"',
'\Z' => "\x1a"
]);
}
在正确编写的应用程序,应该很少会需要这个功能。你应该使用PDO与参数绑定,以处理任何自动逃逸。我只是创造了这个函数来处理这是在逃避一切输入一些旧代码,我需要一种方法来找回原来的数据。