在php中转义javascript的序列

时间:2013-10-16 05:05:24

标签: javascript

下面的代码不起作用,我已经使用斜线转义单引号和双引号,但我在firebug中收到错误“未终止的字符串文字”。

 echo '
function AnimateButtonPress(keyChar) {
switch (keyChar) {       
    case "\"":
    case "\'":
        animateKey(40);
        break;

}
}';

3 个答案:

答案 0 :(得分:0)

PHP字符串中的反斜杠实际上仍然作为转义序列运行,因此在生成的HTML中不会发出反斜杠。你也需要逃避斜线:

echo '
function AnimateButtonPress(keyChar) {
    switch (keyChar) {       
        case "\\"":
        case "\'":
            animateKey(40);
            break;
    }
}';

你也可以使用HEREDOC,更好的是NOWDOC,以减少逃跑的需要。

echo <<<'EOT'
function AnimateButtonPress(keyChar) {
    switch (keyChar) {       
        case '"':
        case "'":
            animateKey(40);
            break;
    }
}
EOT;

或者,如果这只是静态HTML,为什么要用PHP发出它?只需将它放在<?php ?>标签之外作为普通标记。

<?php
// code
?>
function AnimateButtonPress(keyChar) {
    switch (keyChar) {       
        case '"':
        case "'":
            animateKey(40);
            break;
    }
}
<?php
// more code
?>

答案 1 :(得分:0)

如果必须在PHP中构建此字符串,我建议使用HEREDOC

$js = <<<_JS
function AnimateButtonPress(keyChar) {
    switch (keyChar) {       
        case '"':
        case "'":
            animateKey(40);
            break;
        }
}
_JS;
echo $js;

或者,完全退出PHP

?>
function AnimateButtonPress(keyChar) {
    switch (keyChar) {       
        case '"':
        case "'":
            animateKey(40);
            break;
        }
}
<?php

答案 2 :(得分:0)

您的代码在Javascript中将如下所示:

function AnimateButtonPress(keyChar) {
switch (keyChar) {       
    case """:
    case "'":
        animateKey(40);
        break;
}}

这是无效的JS。你必须两次转义引号,一次用于php,一次用于Javascript。

case "\\\"":
case "\'":