addslashes的字符串问题

时间:2012-03-25 02:27:40

标签: php

我有一个用相机名称构建表的循环。在该表中有一个按钮:

<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:&nbsp;</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已关闭

1 个答案:

答案 0 :(得分:0)

我想,这是一些其他类型的单引号,而不是&#39;

为了将数据从php传输到js,jsone_ncode是最佳选择。它也适用于字符串。