php有问题包括javascript和引号?

时间:2011-05-25 21:24:23

标签: php escaping quotes double-quotes

这是我的代码:

$buffer .= '<legend>'.$thisField.'</legend><input type="text" name="'.$thisField.'" id="'.$thisField.'"/> <a href="javascript:;" onClick="mcImageManager.browse({fields : 'url_abs'});">[Pick file]</a><br /><small>360px W x 240px H</small><br /><br />';

正在打破语法错误,意外的T_STRING

我尝试过各种单引号,双引号和转义的组合?

我不知所措,我错过了什么?

谢谢!

4 个答案:

答案 0 :(得分:3)

只需使用反斜杠转义字符串中的引号:

$buffer .= '<legend>'.$thisField.'</legend><input type="text" name="'.$thisField.'" id="'.$thisField.'"/> <a href="javascript:;" onClick="mcImageManager.browse({fields : \'url_abs\'});">[Pick file]</a><br /><small>360px W x 240px H</small><br /><br />';

请参阅the PHP manual

  

要指定文字单引号,请使用反斜杠(\)转义它。

答案 1 :(得分:2)

在这种情况下,为了便于阅读,建议使用HEREDOC字符串:

$buffer .= <<<END
  <legend>$thisField</legend>
  <input type="text" name="$thisField" id="$thisField"/>
  <a href="javascript:;" onClick="mcImageManager.browse({fields : 'url_abs'});">[Pick file]</a>
  <br /><small>360px W x 240px H</small><br /><br />
END;

这避免了必须逃避任何报价。你可以在这样的一个块中写出$变量。

答案 2 :(得分:1)

正如荧光笔告诉你的那样,php将在{fields : 'url_abs'}附近失败。你在单引号字符串中,所以你必须转义字符串中的单引号: {fields : \'url_abs\'}

答案 3 :(得分:0)

问题是url_abs周围的单引号。