我有一个用相机名称构建表的循环。在该表中有一个按钮:
<button id="editbutton" onClick='edit(this, "<?php echo addslashes($_SERVER['REQUEST_URI']); ?>", "<?php echo addslashes($result_cameras[$i]["camera_name"]); ?>")'>Edit</button>
我想要做的是接受特殊字符,例如单引号,双引号和反斜杠,因为我将它传递给javascript函数,它可以执行一些额外的操作:
var edit = function(t, to, cameraname)
{
var mydiv = $("#editform");
if (mydiv.find("form").length) {
mydiv.show();
} else {
// fields
var $myform = $("<form id='EditCameraForm' name='' method='post' action='" + to + "'></form>");
var $myfieldset = $("<fieldset><legend>Edit camera settings</legend></fieldset>");
var $mylabel = $("<label for='CameraName'>Camera name: </label>");
var $myinput2 = js('<input/>').attr('size','25').attr('name','camera_name').attr('id','CameraName').val(cameraname);
...
}
我的问题是cameraname
没有逃避特殊字符。在另一篇文章中,我被引导使用addslashes
。听起来不错但我相信问题是我的字符串:$result_cameras[$i]["camera_name"]
。我可以做一个简单的测试:
<?php $str="a's camera";
$str=addslashes($str);
echo $str;
?>
按预期返回a\'s camera
。但如果我这样做:
<?php $str=$result_cameras[$i]["camera_name"];
$str=addslashes($str);
echo $str;
?>
这只会返回a's camera
。我确定我在这里遗失了一些脑死亡的东西,为什么这不被视为带有addslashes的字符串?
注意:magic_quotes_gpc已关闭
答案 0 :(得分:0)
我想,这是一些其他类型的单引号,而不是'
。
为了将数据从php传输到js,jsone_ncode
是最佳选择。它也适用于字符串。