PHPソースコードをハイライト表示する

PHP講座>Tips>PHPソースコードをハイライト表示する

php.netのコメントにあるような、ハイライトされたソースコードを表示する方法について解説します。

ハイライト表示の例
<html>
<head>
<title>サンプルソース</title>
</head>
<body>
<?php
$ar 
= array("hello""thank you""goodbye");
# 配列を表示
foreach($ar as $s) {
  echo 
$s."<br />";
}
?>
</body>
</html>

コードをハイライト表示するには、2つの方法があります。

  1. PHPに元から組み込まれているhighlight_file()関数およびhighlight_string()関数を使う
  2. PEARのText_Highlighterを使う

今回は1つ目の方法を使ってみたいと思います。

組み込み関数によるハイライト表示

highlight_file()もhighlight_string()も、表示される色などは同じですが ファイル名を引数に取るか、文字列を引数に取るかが異なります。

highlight_file()の使用例
<html>
<head><title>Highlight file</title></head>
<body>
<?php
highlight_file("test.php");
?>
</body>
</html>

出力例
<html>
<head>
<title>サンプルソース</title>
</head>
<body>
<?php
$ar 
= array("hello""thank you""goodbye");
# 配列を表示
foreach($ar as $s) {
  echo 
$s."<br />";
}
?>
</body>
</html>

highlight_file()を呼び出すだけでハイライトされたソースが描写されます。

highlight_string()の使用例
<html>
<head><title>Highlight string</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
</head>
<body>
<?php
if($_POST{"hl_source"}) {
highlight_string(stripslashes($_POST{"hl_source"}));
}
?>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="POST">
<textarea name="hl_source" cols="35" rows="7"></textarea>
<input type="submit" value="送信" />
</form>
</body>
</html>

サンプルはこちらをご参照ください。

ハイライトされたコードを受け取りたい場合は第二引数にtrueを指定します。

$rt = highlight_string(stripslashes($_POST{"hl_source"}), TRUE);

色の設定

ハイライト時には次の色が使われます。

識別子説明デフォルト色
highlight.bg背景色White(#ffffff)
highlight.commentソース内のコメントOrange(#ff9900)
highlight.htmlPHPコード外のHTMLタグBlack(#000000)
highlight.keywordキーワード(if,for,as,arrayなど)Dark Green(#006600)
highlight.string文字列(""や''で囲まれた部分)Red(#cc0000)
highlight.defaultソース内のその他の文字Blue(#0000CC)

これらの色は、highlight_string()、highlight_file()共通です。
色を変更するには2つの方法があります。

(1).htaccessを書き換える

たとえばkeywordをピンクで表示したい場合は、.htaccessに次の一文を追加します。

php_value highlight.keyword #ff00ff

なおこの方法は、サーバーの設定で、.htaccessからPHPの設定を変えられるようになっている必要があります。

(2)コード内で色を指定する

ini_set()を使うことで、コード内で色を指定することができます。
例として、keywordをピンクで表示したい場合は次のようにします。

<?php
ini_set('highlight.keyword', '#ff00ff;');
highlight_file('test.php');
?>

以上でハイライト表示についての説明を終わります。
highlight_string()を使ったサンプルプログラムとソースコードを載せておきますのでご参照ください。
PHPソースをハイライト表示
ソース

番外編:拡張子をphpsにする

多くのサーバーでは、拡張子phpsのファイルについては、ハイライトされたソースコードを表示します。

この機能が無効になっている場合は、httpd.confに以下のような行を追加することで有効にできます。

AddType application/x-httpd-php-source .phps
PHP講座>Tips>PHPソースコードをハイライト表示する