Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

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

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)

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

引数(parameters)

string $string, bool $return = false

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

戻り値(return)

string|bool

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

サンプルコード

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

1<?php
2
3declare(strict_types=1);
4
5/**
6 * highlight_string() を使用してPHPコードをシンタックスハイライトする。
7 *
8 * この関数は、引数で与えられたPHPコードの文字列をHTML形式で色付けし、
9 * ブラウザで表示可能な形式で出力します。
10 * Webサーバー環境で実行するか、 `php -S localhost:8000` のような
11 * ビルトインWebサーバーで実行してブラウザで確認してください。
12 *
13 * @return void
14 */
15function displayHighlightedCode(): void
16{
17    // ハイライト表示させたいPHPコードを文字列として用意します。
18    // heredoc構文を使うと、複数行のコードをそのまま記述できて便利です。
19    $phpCodeString = <<<'CODE'
20<?php
21// これはハイライト表示されるPHPコードのサンプルです。
22class User
23{
24    public function __construct(
25        public readonly string $name,
26        private readonly int $age
27    ) {}
28
29    public function getProfile(): string
30    {
31        if ($this->age < 0) {
32            return "年齢が不正です。";
33        }
34        return "名前: {$this->name}, 年齢: {$this->age}歳";
35    }
36}
37
38$user = new User('Taro Yamada', 30);
39echo $user->getProfile();
40CODE;
41
42    // highlight_string() の第二引数に true を指定すると、
43    // 結果を直接出力するのではなく、ハイライトされたHTML文字列として返します。
44    // この文字列を後でHTMLに埋め込むことができます。
45    $highlightedHtml = highlight_string($phpCodeString, true);
46
47    // 結果をブラウザで表示するためのHTMLを出力します。
48    echo <<<HTML
49<!DOCTYPE html>
50<html lang="ja">
51<head>
52    <meta charset="UTF-8">
53    <title>highlight_string() のサンプル</title>
54    <style>
55        /* デフォルトのスタイルが見やすいように、少しだけ見た目を整えます */
56        body {
57            background-color: #f4f4f4;
58            font-family: sans-serif;
59            padding: 20px;
60        }
61        .code-container {
62            background-color: #ffffff;
63            border: 1px solid #cccccc;
64            padding: 15px;
65            border-radius: 5px;
66        }
67    </style>
68</head>
69<body>
70    <h1><code>highlight_string()</code> の実行結果</h1>
71    <div class="code-container">
72        {$highlightedHtml}
73    </div>
74</body>
75</html>
76HTML;
77}
78
79// 関数を呼び出して実行します。
80displayHighlightedCode();

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コード文字列をハイライト表示する

1<?php
2
3/**
4 * このスクリプトは、PHPコードを含む文字列を構文ハイライトして表示します。
5 * highlight_string() 関数は、PHPコード文字列をHTML形式で色付けして出力するために使用されます。
6 */
7
8// ハイライトしたいPHPコードを文字列として定義します。
9// ヒアドキュメント(<<< 'EOD')を使うと、複数行のコードを読みやすく記述できます。
10$phpCodeString = <<<'EOD'
11<?php
12// これはサンプルPHPコードです。
13// 変数を定義します。
14$message = "Hello, PHP 8!";
15$version = 8.2;
16
17/**
18 * 渡されたメッセージとバージョンを出力する関数です。
19 *
20 * @param string $text    出力するメッセージ
21 * @param float  $phpVer  PHPのバージョン
22 * @return void
23 */
24function displayInfo(string $text, float $phpVer): void
25{
26    echo $text . " Running on PHP " . $phpVer . "!\n";
27}
28
29// 関数を呼び出します。
30displayInfo($message, $version);
31
32// 条件分岐の例
33if ($version >= 8.0) {
34    echo "This script runs on PHP 8 or newer.\n";
35} else {
36    echo "This script runs on an older PHP version.\n";
37}
38
39/*
40 * これは複数行コメントの例です。
41 * highlight_string() は、コメントやキーワードなども色分けしてくれます。
42 */
43EOD;
44
45// highlight_string() 関数を呼び出し、定義したPHPコード文字列を構文ハイライトして直接出力します。
46// デフォルトでは、highlight_string() はハイライトされたHTMLを直接ブラウザに出力します。
47// (第2引数を省略するかfalseに設定した場合の挙動です)
48// HTMLとして正しく表示されるように、通常はHTMLドキュメントの<body>タグ内に配置します。
49echo '<h1>PHPコードのハイライト表示</h1>';
50highlight_string($phpCodeString);
51
52// 補足: もしハイライトされた内容を文字列として取得したい場合は、第二引数に true を指定します。
53// $highlightedHtml = highlight_string($phpCodeString, true);
54// echo '<pre>' . $highlightedHtml . '</pre>'; // <pre>タグなどで囲むと、整形された状態で表示されます。
55
56?>

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を文字列として変数に格納し、後から利用できます。安全のため、ユーザーが入力した文字列など、信頼できないデータをこの関数に直接渡すのは避けてください。

PHPコードの差分をハイライト表示する

1<?php
2
3/**
4 * 2つのPHPコードスニペットを比較し、それぞれを構文ハイライトして表示する関数。
5 * highlight_string関数は、PHPコードをHTML形式で構文ハイライトします。
6 * この関数は、変更前と変更後のコードの視覚的な違いを初心者にも分かりやすく示します。
7 *
8 * @param string $originalCode 変更前のPHPコードスニペット文字列
9 * @param string $modifiedCode 変更後のPHPコードスニペット文字列
10 * @return void HTML形式でハイライトされたコードを直接出力します。
11 */
12function displayCodeDiffHighlight(string $originalCode, string $modifiedCode): void
13{
14    echo "<h1>PHPコードの変更点ハイライト比較</h1>";
15    echo "<p>この例では、PHPの<code>highlight_string</code>関数を使用して、";
16    echo "変更前と変更後のPHPコードをそれぞれ構文ハイライトして表示します。<br>";
17    echo "直接的な差分表示ではありませんが、視覚的に変更点を比較するのに役立ちます。</p>";
18
19    echo "<h2>--- 変更前のコード ---</h2>";
20    // highlight_stringはPHPコードをHTML形式で構文ハイライトし、その結果を返します。
21    // 第2引数にtrueを渡すことで、直接出力せずに文字列として取得できます。
22    // highlight_stringは、コード全体を<pre>タグで囲んだHTMLを生成します。
23    $highlightedOriginal = highlight_string($originalCode, true);
24    if ($highlightedOriginal !== false) {
25        echo $highlightedOriginal;
26    } else {
27        echo "<p>オリジナルコードのハイライトに失敗しました。</p>";
28    }
29
30    echo "<h2>--- 変更後のコード ---</h2>";
31    $highlightedModified = highlight_string($modifiedCode, true);
32    if ($highlightedModified !== false) {
33        echo $highlightedModified;
34    } else {
35        echo "<p>変更後コードのハイライトに失敗しました。</p>";
36    }
37}
38
39// 比較するPHPコードスニペットを定義します。
40// ヒアドキュメント(<<<)を使って複数行の文字列を記述します。
41$codeSnippetOriginal = <<<'EOD'
42<?php
43/**
44 * ユーザー情報を取得する関数 (初期バージョン)
45 * @param int $userId ユーザーID
46 * @return array ユーザー情報
47 */
48function getUserInfo(int $userId): array
49{
50    // 仮のデータベースアクセス処理
51    if ($userId === 1) {
52        return ['id' => 1, 'name' => 'Alice', 'status' => 'active'];
53    }
54    return [];
55}
56
57$currentUserId = 1;
58$userInfo = getUserInfo($currentUserId);
59if (!empty($userInfo)) {
60    echo "現在のユーザー: " . $userInfo['name'] . "\n";
61} else {
62    echo "ユーザーが見つかりません。\n";
63}
64EOD;
65
66$codeSnippetModified = <<<'EOD'
67<?php
68/**
69 * ユーザー情報を取得する関数 (更新バージョン)
70 * メールアドレス情報を追加し、デフォルトユーザーを変更しました。
71 * @param int $userId ユーザーID
72 * @return array ユーザー情報
73 */
74function getUserInfo(int $userId): array
75{
76    // 仮のデータベースアクセス処理
77    if ($userId === 2) { // ユーザーIDを2に変更
78        return ['id' => 2, 'name' => 'Bob', 'status' => 'active', 'email' => 'bob@example.com'];
79    }
80    return [];
81}
82
83$currentUserId = 2; // 取得するユーザーIDを変更
84$userInfo = getUserInfo($currentUserId);
85if (!empty($userInfo)) {
86    echo "現在のユーザー: " . $userInfo['name'] . "\n";
87    echo "メールアドレス: " . $userInfo['email'] . "\n"; // 新しい情報を出力
88} else {
89    echo "ユーザーが見つかりません。\n";
90}
91EOD;
92
93// 上記で定義したコードスニペットを使って比較ハイライトを表示します。
94displayCodeDiffHighlight($codeSnippetOriginal, $codeSnippetModified);
95
96?>

PHPのhighlight_string関数は、指定されたPHPコードの文字列を、色付きのHTML形式で表示するための機能です。これにより、コードの構文が視覚的に強調され、特にシステムエンジニアを目指す初心者の方にとって、コード構造の理解や可読性の向上に役立ちます。

この関数は2つの引数を取ります。1つ目の$string引数には、ハイライトしたいPHPコードを文字列として渡します。2つ目の$return引数はオプションの真偽値で、デフォルトはfalseです。falseを指定した場合、ハイライトされたHTMLコードは直接ブラウザに出力されますが、trueを指定すると、出力されずにHTMLコードの文字列が関数の戻り値として返されます。関数の戻り値は、処理に成功すればハイライトされたHTML文字列、失敗すればfalseとなります。

提供されたサンプルコードでは、このhighlight_string関数を活用し、変更前と変更後のPHPコードスニペットをそれぞれハイライト表示しています。第2引数にtrueを指定することで、ハイライトされたHTML文字列を取得し、echo文で出力する形式を取っています。これは、コードの変更点を直接的に比較する「差分表示」とは異なりますが、構文が色分けされて表示されるため、視覚的に変更された部分を見つけやすくし、初心者の方にもコードの違いを分かりやすく示す目的で使われます。例えば、ユーザー情報を取得する関数の内容がどのように修正されたかを視覚的に確認できます。

highlight_string関数は、指定されたPHPコード文字列を構文ハイライトしたHTMLを生成します。コードを実行するわけではなく、あくまで文字列として整形する機能です。第2引数にtrueを設定することで、ハイライト結果を文字列として受け取ることができ、直接ブラウザに出力されるのを防げます。

この関数がfalseを返す場合、ハイライト処理に失敗していますので、安全に利用するためには必ず戻り値の確認を行ってください。highlight_stringは、コード間の具体的な差分を自動で検出する機能ではありません。あくまで、個々のPHPコードを視覚的に分かりやすく表示するために活用します。生成されるHTMLには<pre>タグが含まれますので、表示環境に合わせてCSSを適用することで、より見やすく整形できます。

関連コンテンツ

関連プログラミング言語