以下のコードは機能しません。一重引用符と二重引用符をスラッシュでエスケープしましたが、firebug で「unterminated stringliteral」というエラーが発生します。
echo '
function AnimateButtonPress(keyChar) {
switch (keyChar) {
case "\"":
case "\'":
animateKey(40);
break;
}
}';
以下のコードは機能しません。一重引用符と二重引用符をスラッシュでエスケープしましたが、firebug で「unterminated stringliteral」というエラーが発生します。
echo '
function AnimateButtonPress(keyChar) {
switch (keyChar) {
case "\"":
case "\'":
animateKey(40);
break;
}
}';
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
?>
この文字列を 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