Tokenizerとは? わかりやすく解説

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 ファイルを読み込み、ソースから全てのコメントを削除し、コードのみを 出力するものです。
例 2379. 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;
       }
   }
}
?>

目次

token_get_all — 指定したソースを PHP トークンに分割する
token_name — 指定した PHP トークンのシンボル名を取得する



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Tokenizer」の関連用語

Tokenizerのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Tokenizerのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2024 by the PHP Documentation Group.

©2024 GRAS Group, Inc.RSS