【PHP8.x】highlight_string関数の使い方

作成日: 更新日:

highlight_string関数は、指定されたPHPコードの文字列を構文ハイライトし、その結果をHTML形式で出力または返却する関数です。この関数を利用することで、PHPコードのキーワード、変数、文字列、コメントなどに異なる色や書式を適用したHTMLを生成し、コードの視覚的な可読性を向上させることができます。

具体的には、ウェブページ上でPHPコードスニペットを表示する際などに特に有用です。コードが色分けされることで、その構造や要素が一目で分かりやすくなり、ドキュメントや解説の場面で理解を助けます。

この関数は2つの引数を取ります。最初の引数には、ハイライトしたいPHPコードを文字列として指定します。例えば、<?php echo "Hello World"; ?> のような実際のコード文字列を渡します。2番目の引数はオプションで、真偽値(trueまたはfalse)を指定します。この引数をtrueに設定すると、highlight_string関数は生成されたハイライト済みのHTML文字列を関数の戻り値として返します。もしこの引数を省略するかfalseに設定すると、関数はハイライトされたHTMLを直接ウェブブラウザなどに出力します。

戻り値について、2番目の引数がfalseの場合、関数が正常に処理を完了すればtrueを、失敗すればfalseを返します。一方、2番目の引数がtrueの場合、成功時にはハイライトされたHTML形式の文字列を、失敗時にはfalseを返します。この関数は、プログラムのソースコードをウェブページ上で分かりやすく表示したいシステム開発の場面で頻繁に活用されます。

基本的な使い方

構文(syntax)

<?php
$phpCode = '<?php echo "Hello, PHP!"; ?>';
$highlightedOutput = highlight_string($phpCode, true);
?>

引数(parameters)

string $string, bool $return = false

  • string $string: ハイライト処理を行うPHPコードを含む文字列
  • bool $return = false: trueを指定すると、ハイライトされたHTMLコードを文字列として返します。falseを指定すると、直接出力します。

戻り値(return)

string|bool

指定されたPHPコードがシンタックスハイライトされたHTML文字列を返します。ハイライトに失敗した場合はfalseを返します。

サンプルコード

PHPコードをシンタックスハイライトする

<?php

declare(strict_types=1);

/**
 * highlight_string() を使用してPHPコードをシンタックスハイライトする。
 *
 * この関数は、引数で与えられたPHPコードの文字列をHTML形式で色付けし、
 * ブラウザで表示可能な形式で出力します。
 * Webサーバー環境で実行するか、 `php -S localhost:8000` のような
 * ビルトインWebサーバーで実行してブラウザで確認してください。
 *
 * @return void
 */
function displayHighlightedCode(): void
{
    // ハイライト表示させたいPHPコードを文字列として用意します。
    // heredoc構文を使うと、複数行のコードをそのまま記述できて便利です。
    $phpCodeString = <<<'CODE'
<?php
// これはハイライト表示されるPHPコードのサンプルです。
class User
{
    public function __construct(
        public readonly string $name,
        private readonly int $age
    ) {}

    public function getProfile(): string
    {
        if ($this->age < 0) {
            return "年齢が不正です。";
        }
        return "名前: {$this->name}, 年齢: {$this->age}歳";
    }
}

$user = new User('Taro Yamada', 30);
echo $user->getProfile();
CODE;

    // highlight_string() の第二引数に true を指定すると、
    // 結果を直接出力するのではなく、ハイライトされたHTML文字列として返します。
    // この文字列を後でHTMLに埋め込むことができます。
    $highlightedHtml = highlight_string($phpCodeString, true);

    // 結果をブラウザで表示するためのHTMLを出力します。
    echo <<<HTML
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>highlight_string() のサンプル</title>
    <style>
        /* デフォルトのスタイルが見やすいように、少しだけ見た目を整えます */
        body {
            background-color: #f4f4f4;
            font-family: sans-serif;
            padding: 20px;
        }
        .code-container {
            background-color: #ffffff;
            border: 1px solid #cccccc;
            padding: 15px;
            border-radius: 5px;
        }
    </style>
</head>
<body>
    <h1><code>highlight_string()</code> の実行結果</h1>
    <div class="code-container">
        {$highlightedHtml}
    </div>
</body>
</html>
HTML;
}

// 関数を呼び出して実行します。
displayHighlightedCode();

highlight_string()関数は、引数として渡されたPHPコードの文字列を、構文に応じて色付けされたHTML形式に変換します。ウェブサイトなどでPHPのソースコードを読みやすく表示したい場合に便利です。

第一引数 $string には、ハイライト表示させたいPHPコードを文字列として指定します。

第二引数 $return は、変換結果の扱いを決めるための論理値(bool型)の引数で、省略可能です。デフォルトの値は false で、この場合は変換されたHTMLが直接ブラウザに出力されます。サンプルコードのように true を指定すると、結果は出力されず、代わりにHTML文字列として関数の戻り値として返されます。これにより、取得したHTMLを後からページ内の任意の場所に埋め込むことができます。

戻り値は、第二引数 $return の値によって変わります。true を指定した場合は、ハイライト処理されたHTML文字列が返されます。false の場合は、処理が成功すると true が返されます。

このサンプルコードでは、まずPHPのクラス定義を含むコードを文字列として用意しています。次に、highlight_string()関数の第二引数に true を渡して、色付けされたHTML文字列を変数に格納します。最後に、その変数をあらかじめ用意したHTMLのテンプレート内に埋め込んで出力することで、ブラウザ上でシンタックスハイライトされたコードを表示しています。

highlight_string関数は、引数で渡されたPHPコードの文字列をHTMLで色付けします。注意点として、第2引数にtrueを指定しないと、結果は戻り値として返されず、その場で直接HTMLとして出力されます。意図しない場所にコードが表示されレイアウトが崩れる原因になるため、通常はtrueを指定して文字列として受け取ります。この関数が生成するのはHTMLのため、コマンドライン上ではタグがそのまま表示されてしまいます。Webサーバー経由でブラウザで表示して結果を確認してください。また、ハイライト対象の文字列には<?phpタグを含めることが推奨されます。セキュリティ保護のため、ユーザーが入力した内容をこの関数に直接渡さないようにしましょう。

PHPコード文字列をハイライト表示する

<?php

/**
 * このスクリプトは、PHPコードを含む文字列を構文ハイライトして表示します。
 * highlight_string() 関数は、PHPコード文字列をHTML形式で色付けして出力するために使用されます。
 */

// ハイライトしたいPHPコードを文字列として定義します。
// ヒアドキュメント(<<< 'EOD')を使うと、複数行のコードを読みやすく記述できます。
$phpCodeString = <<<'EOD'
<?php
// これはサンプルPHPコードです。
// 変数を定義します。
$message = "Hello, PHP 8!";
$version = 8.2;

/**
 * 渡されたメッセージとバージョンを出力する関数です。
 *
 * @param string $text    出力するメッセージ
 * @param float  $phpVer  PHPのバージョン
 * @return void
 */
function displayInfo(string $text, float $phpVer): void
{
    echo $text . " Running on PHP " . $phpVer . "!\n";
}

// 関数を呼び出します。
displayInfo($message, $version);

// 条件分岐の例
if ($version >= 8.0) {
    echo "This script runs on PHP 8 or newer.\n";
} else {
    echo "This script runs on an older PHP version.\n";
}

/*
 * これは複数行コメントの例です。
 * highlight_string() は、コメントやキーワードなども色分けしてくれます。
 */
EOD;

// highlight_string() 関数を呼び出し、定義したPHPコード文字列を構文ハイライトして直接出力します。
// デフォルトでは、highlight_string() はハイライトされたHTMLを直接ブラウザに出力します。
// (第2引数を省略するかfalseに設定した場合の挙動です)
// HTMLとして正しく表示されるように、通常はHTMLドキュメントの<body>タグ内に配置します。
echo '<h1>PHPコードのハイライト表示</h1>';
highlight_string($phpCodeString);

// 補足: もしハイライトされた内容を文字列として取得したい場合は、第二引数に true を指定します。
// $highlightedHtml = highlight_string($phpCodeString, true);
// echo '<pre>' . $highlightedHtml . '</pre>'; // <pre>タグなどで囲むと、整形された状態で表示されます。

?>

highlight_string関数は、PHPコードを含む文字列を、構文ハイライトされたHTML形式に変換して出力するための関数です。ブログ記事やマニュアルなどでPHPのソースコードを分かりやすく表示したい場合に便利です。

第1引数 $string には、ハイライトしたいPHPコードを文字列として渡します。サンプルコードでは、ヒアドキュメントを使用して複数行のPHPコードを変数 $phpCodeString に格納し、これを引数に指定しています。

第2引数 $return は、処理結果の扱い方を決めるもので、デフォルトでは false が設定されています。この場合、生成されたHTMLは直接ブラウザに出力されます。サンプルコードの highlight_string($phpCodeString); はこの動作を利用しており、戻り値としては処理の成功を示す true が返されます。もし第2引数に true を指定すると、結果は出力されずに、ハイライトされたHTMLコードが文字列として返されます。この戻り値を変数に格納すれば、後から好きな場所に表示するなどの加工ができます。

highlight_string関数は、引数に渡したPHPコードの文字列をHTML形式で色付けします。この関数が出力する内容はHTMLタグを含むため、Webページとしてブラウザで表示しないと、色付けされずにHTMLタグがそのまま表示されてしまいます。また、ハイライト対象の文字列には、PHPの開始タグである<?phpを含めることが重要です。このタグがないとコードが正しく認識されず、意図通りに色分けされません。デフォルトでは結果が直接画面に出力されますが、関数の第2引数にtrueを指定すると、HTMLを文字列として変数に格納し、後から利用できます。安全のため、ユーザーが入力した文字列など、信頼できないデータをこの関数に直接渡すのは避けてください。

【PHP8.x】highlight_string関数の使い方 | いっしー@Webエンジニア