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

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

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

作成日: 更新日:

基本的な使い方

php_strip_whitespace関数は、指定されたPHPファイルから、PHPのコメントと余分な空白文字をすべて除去した結果のソースコードを文字列として返す関数です。この関数は、主にPHPコードのファイルサイズを削減し、最適化するために利用されます。例えば、ウェブアプリケーションの配布時や、本番環境でのパフォーマンス向上を目指す際に、コードの容量を小さくするために役立ちます。

この関数の特徴は、単にテキストとして空白を削除するだけでなく、PHPの言語構文を正確に解析しながら安全に削除を行う点です。具体的には、PHPスクリプトを構成するトークンという最小単位に分解し、その中からコメントを示すトークン(T_COMMENTT_DOC_COMMENT)や、意味を持たない空白文字を示すトークン(T_WHITESPACE)だけを選んで取り除きます。これにより、プログラムの動作に影響を与えることなく、不要な部分だけをきれいに削除することが可能です。

ただし、この関数は有効なPHP構文を持つファイルに対してのみ正しく機能します。もし、入力ファイルにPHPの構文エラーが含まれている場合、この関数は期待通りに動作せず、エラーを発生させる可能性があります。そのため、利用する際は、対象のPHPファイルが文法的に正しいことを確認することが重要です。この関数はPHP 8を含む多くのPHPバージョンで利用でき、配布コードの効率化に貢献します。

構文(syntax)

1<?php
2$cleanedContent = php_strip_whitespace('path/to/your/php_file.php');
3?>

引数(parameters)

string $filename

  • string $filename: 処理対象のPHPファイル名を指定する文字列

戻り値(return)

string

PHPコードから全ての空白文字(スペース、タブ、改行、コメントなど)を取り除いた文字列を返します。

サンプルコード

php_strip_whitespace()でコード整形する

1<?php
2
3/**
4 * php_strip_whitespace() 関数の使用例を示します。
5 * この関数は、PHPスクリプトファイルからPHPタグ以外の空白文字、コメントを削除します。
6 * 元のファイルを変更せず、整形されたコードを文字列として返します。
7 */
8function demonstratePhpStripWhitespace(): void
9{
10    // 処理対象となる一時的なPHPファイルを作成します。
11    // このファイルはスクリプト実行後に削除されます。
12    $tempFilename = 'example_script_to_strip.php';
13
14    // コメントや余分な空白を含むサンプルPHPコードを定義します。
15    $originalCode = <<<'EOD'
16<?php
17
18/**
19 * これはクラスの定義例です。
20 * クラスの説明コメント。
21 */
22class MySampleClass
23{
24    // プロパティ
25    public $message = 'Hello, World!'; // メッセージプロパティ
26
27    /**
28     * コンストラクタ。
29     * @param string $msg 初期メッセージ
30     */
31    public function __construct(string $msg = '')
32    {
33        if (!empty($msg)) {
34            $this->message = $msg; // メッセージを設定
35        }
36    }
37
38    /**
39     * メッセージを表示するメソッド。
40     * @return string
41     */
42    public function getMessage(): string
43    {
44        return $this->message;
45    }
46}
47
48// クラスのインスタンスを作成
49$instance = new MySampleClass("こんにちは!");
50
51// メソッドを呼び出し、結果を出力
52echo $instance->getMessage(); // 結果を出力する
53
54?>
55EOD;
56
57    // 定義したコードを一時ファイルに書き込みます。
58    file_put_contents($tempFilename, $originalCode);
59
60    echo "--- 元のPHPコード ---\n";
61    echo htmlspecialchars($originalCode); // HTML特殊文字をエスケープして表示
62    echo "\n----------------------\n\n";
63
64    // php_strip_whitespace() を呼び出し、一時ファイルの内容を処理します。
65    // PHPタグ以外の空白とコメントが削除されたコードが文字列として返されます。
66    $strippedCode = php_strip_whitespace($tempFilename);
67
68    echo "--- php_strip_whitespace() 適用後のコード ---\n";
69    echo htmlspecialchars($strippedCode); // HTML特殊文字をエスケープして表示
70    echo "\n----------------------------------------------\n\n";
71
72    // 使用した一時ファイルを削除します。
73    unlink($tempFilename);
74
75    echo "一時ファイル '{$tempFilename}' は削除されました。\n";
76}
77
78// 関数を実行します。
79demonstratePhpStripWhitespace();
80

php_strip_whitespace()関数は、PHPスクリプトファイル内のPHPタグ以外の空白文字やコメントを削除し、整形されたPHPコードを文字列として返すために使用されます。

この関数はstring $filenameという引数を取り、処理したいPHPスクリプトのファイルパスを指定します。指定されたファイルを読み込み、PHPタグ(<?php?>)で囲まれた部分以外の空白(スペース、タブ、改行)や、//#/* ... */形式のコメントを全て取り除きます。そして、整形されたコードを新しい文字列として返します。元のファイルの内容は変更されません。

戻り値はstring型で、コメントや余分な空白が削除された、よりコンパクトなPHPコードの文字列です。これは、たとえばPHPアプリケーションを配布する際に、ファイルのサイズを削減したり、ソースコードを難読化したりする目的で利用できます。

サンプルコードでは、まずコメントや空白を多く含むPHPコードを一時ファイルに書き込みます。次に、php_strip_whitespace()関数にその一時ファイルのパスを渡して処理を実行します。その結果、元々のコードからコメントや不要な空白が効果的に削除されたコードが出力され、関数の挙動が明確に示されています。処理後には、作成した一時ファイルが削除されます。

php_strip_whitespace()関数は、PHPコードが記述されたファイルのパスを引数に指定します。コード文字列そのものを直接処理するわけではありませんので注意してください。この関数は、指定されたファイルからPHPタグ以外の空白文字やコメントを削除した結果を文字列として返しますが、元のファイルの内容は変更しません。PHPタグ自体は削除されずに残ります。主にスクリプトのファイルサイズ削減や、特定のツールでの前処理といった用途に利用され、コードの整形目的には不向きです。サンプルコードのように一時ファイルを扱う際には、ファイルの作成や削除に伴うエラーハンドリングやセキュリティも考慮する必要があります。

PHPファイルから空白・コメントを除去する

1<?php
2
3// このサンプルコードは、PHPスクリプトファイルからコメントと空白文字を取り除く
4// `php_strip_whitespace` 関数の使い方を示します。
5// まず、処理対象となる一時的なPHPファイルを作成し、その後関数を適用します。
6
7// 1. 処理対象となる一時的なPHPファイルのパスを定義します。
8$tempFilename = 'example_script_to_strip.php';
9
10// 2. 一時ファイルに書き込む元のPHPコードを定義します。
11//    このコードには、コメントや余分な空白、インデントが含まれています。
12$originalPhpCode = <<<'EOT'
13<?php
14
15/**
16 * これはファイルレベルのドキュメントコメントです。
17 * `php_strip_whitespace` 関数によって除去されます。
18 */
19
20// これは単一行コメントです。これも除去されます。
21class MySampleClass
22{
23    // プロパティの宣言
24    private string $message;
25
26    /**
27     * クラスのコンストラクタです。
28     * @param string $msg 初期メッセージ
29     */
30    public function __construct(string $msg)
31    {
32        $this->message = $msg; // インデントと行末コメント
33    }
34
35    // メッセージを取得するメソッド
36    public function getMessage(): string
37    {
38        return $this->message;
39    }
40}
41
42// クラスのインスタンスを作成します。
43$instance = new MySampleClass('Hello, SE初心者!');
44
45echo $instance->getMessage(); // 出力ステートメント
46
47?>
48EOT;
49
50// 3. 定義したPHPコードを一時ファイルに書き込みます。
51if (file_put_contents($tempFilename, $originalPhpCode) === false) {
52    echo "エラー: 一時ファイルの書き込みに失敗しました。\n";
53    exit(1);
54}
55
56echo "--- 元のPHPコード ---\n";
57echo $originalPhpCode;
58echo "\n-----------------------\n\n";
59
60// 4. `php_strip_whitespace` 関数を使用して、
61//    指定されたPHPファイルからコメントと余分な空白を除去します。
62//    この関数は、PHPパーサーが実行時に無視する部分(コメント、改行、スペースなど)を
63//    取り除いた新しい文字列を返します。
64$strippedCode = php_strip_whitespace($tempFilename);
65
66echo "--- `php_strip_whitespace` 適用後のPHPコード ---\n";
67echo $strippedCode;
68echo "\n--------------------------------------------------\n";
69
70// 5. 後処理として、作成した一時ファイルを削除します。
71if (unlink($tempFilename) === false) {
72    echo "警告: 一時ファイルの削除に失敗しました。\n";
73}
74
75?>

php_strip_whitespace関数は、指定されたPHPスクリプトファイルからコメントや余分な空白文字を全て除去したコードの文字列を生成する機能です。この関数は、PHPコードをよりコンパクトにするために利用されます。

引数には、処理対象となるPHPファイルのパスを文字列(string $filename)で指定します。関数は、PHPが実行時に無視する部分、具体的には///* ... */で記述されたコメント、余分なスペース、タブ、改行などを取り除いた新しいPHPコードの文字列(string)を戻り値として返します。

サンプルコードでは、まずコメントやインデントを含むPHPコードを一時ファイルとして作成しています。その後、この一時ファイルのパスをphp_strip_whitespace関数に渡して呼び出しています。実行結果として、元のコードからすべてのコメントと余分な空白が取り除かれ、より簡潔になったPHPコードが表示されます。このように、開発者が記述したコードから実行に不要な部分を取り除き、コードのサイズを最適化する際にこの関数が役立ちます。処理後には、作成した一時ファイルを削除し、システムをクリーンな状態に保っています。

php_strip_whitespace関数は、指定されたPHPファイルのコメントと余分な空白を除去し、その結果を文字列として返します。引数にファイルパスを渡すため、ファイルが存在し、読み込み権限があることを確認してください。この関数は元のファイルを変更せず、処理後のコードは可読性が大幅に低下します。主にコードの最適化や難読化、配布時のファイルサイズ削減目的で使われることが多く、通常開発で頻繁に利用するものではありません。サンプルコードのように一時ファイルを扱う際は、書き込みや削除時のエラーハンドリングを適切に行い、ファイルシステムの安全な操作を心がけてください。

関連コンテンツ

関連IT用語

関連プログラミング言語