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

show_source関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

show_source関数は、指定されたPHPファイルの内容を読み込み、PHPの構文に応じて色分け(構文ハイライト)を施して表示する関数です。この関数は、主にPHPスクリプトのコードをWebブラウザ上で実行するのではなく、そのコード自体を視覚的にわかりやすく表示したい場合に利用されます。例えば、他の開発者にコードの一部を見せたい時や、自身のコードをデバッグする際に、実行結果ではなくソースコード自体を確認したい場合などに便利です。

使用する際は、第一引数に表示したいPHPファイルのパスを文字列で指定します。例えば、show_source('myscript.php');と記述することで、myscript.phpファイルの内容がハイライトされて出力されます。この関数は、highlight_file関数のエイリアス(別名)であるため、両者は全く同じ機能を提供します。

通常、show_source関数はハイライトされたコードを直接Webブラウザに出力しますが、第二引数にtrueを指定することで、出力せずにハイライトされたコードの文字列を取得することも可能です。

ただし、セキュリティ上の注意点があります。インターネットに公開されているWebサイトで、ユーザーが指定した任意のファイルパスをshow_source関数に渡すような実装は、情報漏洩のリスクがあるため避けるべきです。この関数は、主に開発環境でのコードの確認や学習、または信頼できる範囲内でのコード共有の目的で使用することをお勧めします。

構文(syntax)

1show_source('path/to/your/file.php');

引数(parameters)

string $filename, bool $return = false

  • string $filename: 表示するPHPソースコードファイルのパスを指定する文字列
  • bool $return = false: trueを指定すると、ソースコードの文字列を返します。falseの場合は、直接出力します。

戻り値(return)

string|bool

指定されたPHPファイルの内容を文字列として返します。ファイルが存在しない、または読み込めない場合は false を返します。

サンプルコード

PHP show_sourceで自身のソースコードを出力する

1<?php
2
3/**
4 * PHPのshow_source関数を使用して、このスクリプト自身のソースコードを
5 * 構文ハイライトしてブラウザに出力するサンプルコードです。
6 *
7 * show_source関数は、指定されたPHPファイルの内容を、色分けされたHTML形式で表示する際に使用されます。
8 * プログラミング初心者がコードの構造や関数、変数の使われ方を学ぶ際に役立ちます。
9 */
10
11// show_source関数は、指定されたファイルのソースコードを
12// HTML形式で構文ハイライトし、ブラウザに出力します。
13// __FILE__ は、現在実行しているスクリプト自身のフルパスを示すPHPの組み込み定数です。
14show_source(__FILE__);
15
16// 第二引数に true を指定すると、ソースコードは出力されずに文字列として返されます。
17// その場合、取得した文字列をechoなどで表示する必要があります。
18// 以下は、その場合の利用例ですが、このサンプルではデフォルト動作(直接出力)を優先しています。
19/*
20$highlighted_code_string = show_source(__FILE__, true);
21echo "<h2>文字列として取得したハイライト済みコード:</h2>";
22// HTMLとして安全に表示するため、<pre>タグとhtmlspecialchars()を使用するのが一般的です。
23echo "<pre>" . htmlspecialchars($highlighted_code_string) . "</pre>";
24*/
25
26?>

show_source関数は、指定したPHPファイルのソースコードを、構文に応じて色分けされたHTML形式でブラウザに表示するための関数です。PHPのキーワードや変数、コメントなどが異なる色で表示されるため、コードの構造を視覚的に理解しやすくなります。

第一引数 $filename には、対象となるPHPファイルのパスを文字列で指定します。このサンプルコードでは、PHPに組み込まれている定数 __FILE__ を使用しています。__FILE__ は現在実行しているスクリプトファイル自身のフルパスを指すため、このコードは自分自身のソースコードをハイライト表示する、という動作になります。

第二引数 $return は省略可能なオプションで、デフォルトでは false が設定されています。false の場合、ハイライトされたHTMLは直接ブラウザに出力され、関数の処理が成功した場合は戻り値として true が返されます。もし第二引数に true を指定すると、結果は出力されずに、ハイライトされたHTMLコードが文字列として返されます。これにより、取得した文字列を後から加工したり、任意の場所に表示したりできます。

なお、指定したファイルが見つからないなど、処理に失敗した場合は false を返します。

show_source関数は、指定したファイルのソースコードをそのまま表示するため、セキュリティに注意が必要です。外部から受け取ったファイル名を直接指定すると、サーバー内の重要な設定ファイルなどが漏洩する危険性があります。そのため、表示するファイルは開発者自身が固定で指定するようにしてください。この関数は、デフォルトではHTMLとして直接画面に出力しますが、第二引数にtrueを指定すると、結果を文字列として受け取れます。文字列として受け取れば、任意の場所に表示したり加工したりできます。なお、この関数はhighlight_fileという名前でも利用でき、主に学習やデバッグ目的で使用されます。

PHP show source コード表示する

1<?php
2
3/**
4 * PHPの`show_source`関数を使用して、このスクリプト自身のソースコードを
5 * シンタックスハイライト付きで表示するシンプルな例です。
6 *
7 * `show_source`関数は、指定されたファイルのPHPコードを読み込み、
8 * HTML形式でハイライト表示します。これはコードのデバッグや説明に役立ちます。
9 *
10 * 引数:
11 * - `$filename` (string): ソースコードを表示するファイルのパス。
12 * - `$return` (bool, オプション): `true`の場合、結果を文字列として返す。
13 *                                `false` (デフォルト)の場合、直接出力する。
14 */
15
16// `__FILE__`マジック定数は、現在のスクリプトファイルの完全なパスを返します。
17// これにより、このスクリプト自身のコードがブラウザに表示されます。
18show_source(__FILE__);
19
20?>

PHPのshow_source関数は、指定されたPHPスクリプトファイルのソースコードを読み込み、シンタックスハイライト(構文の色分け表示)を適用してHTML形式で出力する機能を提供します。サンプルコードでは、show_source(__FILE__);と記述されており、__FILE__というマジック定数によってこのスクリプトファイル自身のパスが指定されています。これにより、実行するとブラウザにこのPHPスクリプト自身のコードがハイライトされて表示されます。

この関数は二つの引数を取ります。一つ目の$filenameは、ソースコードを表示したいファイルのパスを文字列で指定します。二つ目の$returnはオプションの引数で、論理値(trueまたはfalse)を指定し、デフォルトはfalseです。$returnfalseの場合、関数はハイライトされたコードを直接ブラウザなどに出力し、処理の成功時にはtrueを、失敗時にはfalseを戻り値として返します。もし$returntrueを指定すると、関数はコードを直接出力せず、ハイライトされたコードが格納された文字列を戻り値として返します。この機能は、コードのデバッグや、他の人にコードの内容を説明する際に役立ちます。

show_source関数は、指定されたPHPファイルのソースコードをシンタックスハイライト付きで表示します。引数 $filenameには、正しいファイルのパスを指定しないとエラーになります。__FILE__マジック定数は現在のスクリプトのパスを返しますが、他のファイルを表示する際は正確なパスを指定してください。第二引数 $returntrueにすると表示内容を文字列として取得し、false(デフォルト)の場合は直接出力されます。

この関数を使用する際の最も重要な注意点はセキュリティです。本番環境でデータベース接続情報やAPIキーなどの機密情報を含むファイルをshow_sourceで表示すると、情報漏洩のリスクがあります。そのため、この関数は開発時のデバッグや学習用途に限定し、公開環境での安易な使用は絶対に避けるべきです。表示するファイルのアクセス権限にも注意し、不用意な情報開示につながらないよう十分に配慮してください。

PHP show_source でIP表示コードをハイライトする

1<?php
2
3/**
4 * このスクリプトは、ユーザーのIPアドレスを取得して表示する別のPHPコードを生成し、
5 * そのコードの内容を `show_source()` 関数を使ってハイライト表示します。
6 *
7 * キーワード: php show source ip
8 */
9
10// ユーザーのIPアドレスを取得して表示するPHPコードを文字列として定義します。
11// このコードは、後に一時ファイルに書き込まれ、`show_source()` で表示されます。
12$ipDisplayCode = <<<'EOT'
13<?php
14/**
15 * ユーザーのIPアドレスを取得して表示するシンプルなPHPスクリプト。
16 */
17$ipAddress = $_SERVER['REMOTE_ADDR'] ?? '不明'; // リモートIPアドレスを取得、取得できない場合は'不明'とします。
18echo "あなたのIPアドレス: " . htmlspecialchars($ipAddress, ENT_QUOTES, 'UTF-8') . "\n";
19EOT;
20
21// 一時ファイルを生成するためのパスを取得します。
22// tempnam() 関数は、指定されたディレクトリに一意な一時ファイル名を作成します。
23$tempFilePath = tempnam(sys_get_temp_dir(), 'ip_code_');
24
25// 一時ファイルの生成に失敗した場合の処理
26if ($tempFilePath === false) {
27    echo "<p style='color: red;'>エラー: 一時ファイルの作成に失敗しました。</p>\n";
28    exit(1);
29}
30
31// 定義したPHPコードを一時ファイルに書き込みます。
32// file_put_contents() は、文字列をファイルに書き込む便利な関数です。
33if (file_put_contents($tempFilePath, $ipDisplayCode) === false) {
34    echo "<p style='color: red;'>エラー: 一時ファイルへの書き込みに失敗しました。</p>\n";
35    // 書き込みに失敗した場合は、作成された一時ファイルを削除して終了します。
36    unlink($tempFilePath);
37    exit(1);
38}
39
40echo "<h3>`show_source()` 関数によるPHPコードのハイライト表示例</h3>\n";
41echo "<p>以下のコードは、ユーザーのIPアドレスを表示するPHPスクリプトの内容です。</p>\n";
42echo "<p>この内容は `show_source('{$tempFilePath}')` を使って表示されています。</p>\n";
43
44// show_source() 関数を使って、一時ファイルの内容を構文ハイライト表示します。
45// 第1引数: 表示したいファイルのパス。
46// 第2引数: false (デフォルト) を指定すると、結果がブラウザに直接出力されます。
47//          true を指定すると、ハイライトされた内容が文字列として返されます。
48show_source($tempFilePath, false);
49
50// 使用後の一時ファイルを削除します。
51// unlink() 関数は、指定されたファイルを削除します。
52if (unlink($tempFilePath) === false) {
53    echo "<p style='color: orange;'>警告: 一時ファイルの削除に失敗しました: " . htmlspecialchars($tempFilePath, ENT_QUOTES, 'UTF-8') . "</p>\n";
54}
55
56?>

PHPのshow_source関数は、指定されたPHPファイルのソースコードを読み込み、ウェブブラウザ上で構文ハイライト(色付け)して表示する機能を提供します。これにより、コードの可読性が高まり、デバッグや他のプログラマとのコード共有の際に役立ちます。

第1引数には、表示したいPHPファイルのパスを文字列で指定します。第2引数はオプションで、真偽値(bool)でfalseがデフォルトです。この第2引数をfalseに設定すると、ハイライトされたコードはブラウザに直接出力されます。もしtrueに設定すると、ハイライトされたコードは文字列として関数の戻り値として返されます。

関数の戻り値は、第2引数によって異なります。trueが指定された場合はハイライトされたコードの文字列が返され、それ以外の場合は関数が成功すればtrue、失敗すればfalseが返されます。

このサンプルコードでは、ユーザーのIPアドレスを表示するPHPスクリプトを文字列として定義し、その内容を一時ファイルに保存しています。その後、show_source()関数にその一時ファイルのパスを渡すことで、定義したPHPコードの内容がウェブブラウザ上で構文ハイライトされて表示されます。処理の最後に、作成した一時ファイルは削除されます。

show_source関数はPHPコードを構文ハイライト表示する際に利用します。引数には表示したいPHPファイルのパスを指定しますが、最も注意すべきはセキュリティです。この関数でユーザーが指定した任意のファイルを読み込ませると、サーバー上の機密情報が漏洩する重大なリスクがあります。公開システムでは、表示するファイルを厳しく制限し、入力値の検証を徹底してください。サンプルコードのように一時ファイルを使用する際は、必ず処理後にunlink関数で削除し、不要なファイルが残らないようにしましょう。ファイル操作は失敗する可能性があるため、エラーチェックと適切なエラー処理を実装することが重要です。この関数は主に開発やデバッグ用途で活用されます。

関連コンテンツ