• このエントリーをはてなブックマークに追加

外部JavaScriptをPHPで表示させる方法。
PHPファイル内にJavaScriptの処理や表示を記述するだけなので、簡単。ただ、油断してると、非常にくだらないことでつまってしまうことも。バカバカしいミスも含めて紹介。

PHP(例:js.phpを作成)

参照されるJavaScriptをPHPを使い処理する。サーバーサイド側の処理はPHPだが、表示されるのはJavaScript。多くはHTMLとして表示されるPHPもJavaScriptとして表示されれば、サーバー側の処理も含んだ処理が可能。

<?php
header('Content-Type: text/html; charset=UTF-8');
header("Content-type: application/x-javascript");
?>
// JavaScriptを出力する
document.write('あああ');

// PHPの日付をJavaScriptとして出力する
document.write( '<?php echo date('Y/m/d'); ?>' );

HTML(sample.html)

HTML側の記述は外部スクリプト参照用のタグを設置するだけ。

<script type="text/javascript" src="js.php"></script>

失敗例 PHP(例:js.php)

<script>タグを入れてしまうと、エラーになり表示されない。JavaScriptにはHTMLタグを入れないように注意!

JavaScriptとして表示されるまではいいが、<script>タグを記述してしまっている。これは、外部JSファイルとして参照するためのファイルなので、HTMLタグを入れないこと!ありがちなミスなので、注意。PHPに限らず、HTMLに記述するときも外部JavaScriptにはJavaScript以外の記述を書かないこと!

<?php
header('Content-Type: text/html; charset=UTF-8');
header("Content-type: application/x-javascript");
?>
// <script>
// ↑<script>を書くと動かなくなるから注意!
// JavaScriptを出力する
document.write('あああ');
// </script>を書くと動かなくなるから注意!
// </script>

どういったケースで使うの?

そもそもこういった外部ファイルを使うかということ。使うんですよね。

  • JavaScriptしか使えない
  • PHPが利用できない/動作しないサーバー
  • HTMLを設置するところはシステムなので、PHPが使えない

こういったケース。案件で、お客さんに伝えられるならいいけど、この環境でやれよ。って言われたときにはこういう解決策しか無いですよね。

新着情報を表示させる際なんかはありがち。RSS Feedとか。フィードはPHPで処理して、HTMLに変換するが、PHPとしてincludeできないので、これをJavaScriptとして表示させて、外部参照するときにはこれが使える。

ただ、PHPが使用できるサーバーを別に用意する必要がある。