这个语句在PHP中的含义是什么?

时间:2010-08-31 19:35:34

标签: php

$row['NO'] = '<a href="javascript:void(0)"        onClick="openmywindow(\''.$row['bcd'].'\',\''.$row['gfh'].'\',\''.$row['test2'].'\',\''.$_REQUEST['test1'].'\')">'.$row['abc'].'</a>'

在上面的陈述中,以这种方式转义值的含义是什么,例如'\'。我怎么能学到这个? 在上面的语句中,我想用静态值'OPEN'替换php变量$row['TEST2'],但是我收到了语法错误。

3 个答案:

答案 0 :(得分:2)

$row['NO'] = '<a href="javascript:void(0)" onClick="openmywindow(\''.$row['bcd'].'\',\''.$row['gfh'].'\',\'OPEN\',\''.$_REQUEST['test1'].'\')">'.$row['abc'].'</a>';

因为逃避非常混乱,所以使用HEREDOC可能会更好:

$row['NO'] =<<<EOC;
<a href="javascript:void(0)" onClick="openmywindow('$row[bcd]','$row[gfh]','OPEN','$_REQUEST[test1].')">$row[abc]</a>
EOC;

有关字符串in the manual的更多信息(包括转义和heredoc)。

PS:不要使用$_REQUEST。而是使用$_GET$_POST(此处适用的那个。)

答案 1 :(得分:1)

  

在上面的陈述中是什么   逃避价值的意义   我们怎样才能学习   此

看一下本教程:)

PHP and Escaping

对于错误,请确保正确转义字符串。

答案 2 :(得分:0)

我建议您这样做而不是转义+连接字符串:

$html = "<a href=\"javascript:void(0);\" onclick=\"openmywindow('%s','%s','%s',%s');\">%s</a>";
$row['NO'] = sprintf($html, 
    $row['bcd'], 
    $row['gfh'],
    $row['test2'],
    $_REQUEST['test1'],
    $row['abc']
);

然后更换您需要更换的内容...阅读有关sprintf的手册以获取更多详细信息。

此外,如果$html之后的任何参数包含'个字符,则必须在这些参数上调用addslashes

** 更新 **

关于$_REQUEST,请阅读here为什么不建议您使用它。