PHPのスクリプトに色をつける(ハイライトする)

シェアする

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

TL;DR

文字列には`highlight_string()`関数を使い、
ファイルには`highlight_file()`関数を使う

PHPのソースコードやスクリプトを表示する際に色付き(ハイライトした)状態で出力したい場合は、highlight_stringもしくはhighlight_file関数を使います。

注意点として、表示するデータに<?phpが含まれていないと、コードとして認識されないため、javascriptなどの他の言語や、配列などを表示したい場合には<?phpを文頭に含む必要があります。PHPコードに関係なく色をつけたい場合のサンプルコードを下記に載せたので参考にしてください。


サンプルコード

以下は、デバッグ時に変数、配列、クラスなどの中身をチェックする際にprint_r関数を使う場合に、色付きで表示する例です。

<?php

/**
 * Extended `echo` function for debugging. It echoes the given argument
 * in a pretty formatted way.
 *
 * arg    mixed  $code   
 * arg    string $title
 * return n/a
 */
function debug_echo($code, $title = '')
{
    $title = (empty($title)) ? '' : "<p>${title}</p>";

    if (is_string($code)) {
        //$code = highlight_string("<?php ${code}", true);
        $code = debug_highlight_string($code);
    } else {
        $code = print_r($code, true);
        $code = debug_highlight_string($code);
    }
    //$code = str_replace('&lt;?php&nbsp;', '', $code);
    $code = "<div class='debug'>${title}<pre>${code}</pre></div>";

    echo $code;
}

/**
 * Highlights text
 * http://php.net/manual/ja/function.highlight-string.php#118550
 *
 * arg    string  $text
 * return string  Highlighted string
 */
function debug_highlight_string($text)
{
    $text = trim($text);

    // highlight_string() requires opening PHP tag
    // or otherwise it will not colorize the text
    $text = highlight_string("<?php " . $text, true);

    $text = trim($text);

    // remove prefix
    $text = preg_replace("|^\\<code\\>\\<span style\\=\"color\\: #[a-fA-F0-9]{0,6}\"\\>|", "", $text, 1);

    // remove suffix 1
    $text = preg_replace("|\\</code\\>\$|", "", $text, 1);

    // remove line breaks
    $text = trim($text);

    // remove suffix 2
    $text = preg_replace("|\\</span\\>\$|", "", $text, 1);

    // remove line breaks
    $text = trim($text);

    // remove custom added "<?php "
    $text = preg_replace("|^(\\<span style\\=\"color\\: #[a-fA-F0-9]{0,6}\"\\>)(&lt;\\?php&nbsp;)(.*?)(\\</span\\>)|", "\$1\$3\$4", $text);

    return $text;
}


スポンサーリンク
レクタングル(大)広告

シェアする

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク
レクタングル(大)広告