0

以下のコードは機能しません。一重引用符と二重引用符をスラッシュでエスケープしましたが、firebug で「unterminated stringliteral」というエラーが発生します。

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

}
}';
4

3 に答える 3

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 に答える
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 に答える