« ETCマイレージサービスの登録フ... Main SQLiteのサブクエリの落とし穴 »

PHPからのJavaScript出力でエラー

PHPスクリプト中のヒアドキュメントでJavaScriptを出力させようとして、次のようにするとエラーになってしまう:

<?php
print <<<EOF
<script type="text/javascript">
var obj = function(){$('#foo').text('OK');}
</script>

EOF;

実行結果(エラー)

PHP Parse error:  syntax error, unexpected '(', expecting T_VARIABLE or '$' in /tmp/foo.php on line 4

function中でjQuery絡みの$(‘…’)の箇所を解釈しようとしてエラーになっているらしい。

試しに、同じ個所を
対策1

var obj = function(){1+$('#foo').text('OK');}

とすると問題なく出力されて、JavaScriptも動作する。

PHP側のヒアドキュメント側での変数展開の問題かと思いついて、次のようにエスケープすると
対策2

var obj = function(){\$('#foo').text('OK');}

これも問題なく出力されて、JavaScriptも動作した。

ヒアドキュメントでの変数展開の理解不足が根本原因そうだが、不要な式が入ってこない後者(対策2)のほうがいいのかな。

Leave a comment

Your comment