PHP マニュアル
前のページ |  | 次のページ

# CLVI. Tokenizer 関数

# 導入

tokenizer 関数は、Zend Engine に組み込まれた PHP tokenizer への インターフェイスを提供します。以下の関数により、 字句解析レベルの言語処理を行うことなく、PHP ソースを解析/修正する ツールを作成することが可能となります。

トークンに関する付録も参照ください。

# 要件

外部ライブラリを必要としません。

# インストール手順

PHP 4.3.0 以降、以下の関数はデフォルトで有効となっています。 これ以前のバージョンの場合、 --enable-tokenizer を指定して PHP をコンパイルする必要があります。 --disable-tokenizer を指定すること により、tokenizer サポートを無効とすることができます。

Windows 版の PHP には この拡張モジュールのサポートが組み込まれています。これらの関数を使用 するために拡張モジュールを追加でロードする必要はありません。

> 注意: tokenizer の組込みサポートは PHP 4.3.0 で利用可能となりました。

# 定義済み定数

この拡張モジュールを組み込んで PHP をコンパイルするか、あるいは実行時に 動的にモジュールを読み込むと、付録Q に挙げられている トークンが定数として定義されます。

# 例

以下に tokenizer を用いた簡単な PHP スクリプトの例を示します。この例は、 PHP ファイルを読み込み、ソースから全てのコメントを削除し、コードのみを 出力するものです。

例 1. tokenizer によりコメントを削除する
`<?php /* * T_ML_COMMENT は PHP 5 には存在しません。 * 以下の 3 行で、古いバージョンとの互換性を確保するために * これらを定義しています。 * * その次の 2 行では、PHP 5 にのみ存在する T_DOC_COMMENT を定義しています。 * T_ML_COMMENT が存在するかどうかで PHP 4 かどうかを判断しています。 */ if (!defined('T_ML_COMMENT')) { define('T_ML_COMMENT', T_COMMENT); } else { define('T_DOC_COMMENT', T_ML_COMMENT); } $source = file_get_contents('example.php'); $tokens = token_get_all($source); foreach ($tokens as $token) { if (is_string($token)) { // 簡単な1文字毎のトークン echo $token; } else { // トークン配列 list($id, $text) = $token; switch ($id) { case T_COMMENT: case T_ML_COMMENT: // we've defined this case T_DOC_COMMENT: // and this // コメントの場合は何もしない break; default: // それ以外の場合 -> "そのまま"出力 echo $text; break; } } } ?>`

前のページ | ホーム | 次のページ
tidyNode->isText | 上に戻る | token_get_all