0

下面的代码不起作用,我已经用斜杠转义了单引号和双引号,但在萤火虫中出现错误“未终止的字符串文字”。

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

}
}';
4

3 回答 3

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
于 2013-10-16T05:11:45.430 回答
0

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

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

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

case "\\\"":
case "\'":
于 2013-10-16T05:14:38.230 回答
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
?>
于 2013-10-16T05:10:08.387 回答