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

# CXIII. 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内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

`T_INCLUDE` (integer)

`T_INCLUDE_ONCE` (integer)

`T_EVAL` (integer)

`T_REQUIRE` (integer)

`T_REQUIRE_ONCE` (integer)

`T_LOGICAL_OR` (integer)

`T_LOGICAL_XOR` (integer)

`T_LOGICAL_AND` (integer)

`T_PRINT` (integer)

`T_PLUS_EQUAL` (integer)

`T_MINUS_EQUAL` (integer)

`T_MUL_EQUAL` (integer)

`T_DIV_EQUAL` (integer)

`T_CONCAT_EQUAL` (integer)

`T_MOD_EQUAL` (integer)

`T_AND_EQUAL` (integer)

`T_OR_EQUAL` (integer)

`T_XOR_EQUAL` (integer)

`T_SL_EQUAL` (integer)

`T_SR_EQUAL` (integer)

`T_BOOLEAN_OR` (integer)

`T_BOOLEAN_AND` (integer)

`T_IS_EQUAL` (integer)

`T_IS_NOT_EQUAL` (integer)

`T_IS_IDENTICAL` (integer)

`T_IS_NOT_IDENTICAL` (integer)

`T_IS_SMALLER_OR_EQUAL` (integer)

`T_IS_GREATER_OR_EQUAL` (integer)

`T_SL` (integer)

`T_SR` (integer)

`T_INC` (integer)

`T_DEC` (integer)

`T_INT_CAST` (integer)

`T_DOUBLE_CAST` (integer)

`T_STRING_CAST` (integer)

`T_ARRAY_CAST` (integer)

`T_OBJECT_CAST` (integer)

`T_BOOL_CAST` (integer)

`T_UNSET_CAST` (integer)

`T_NEW` (integer)

`T_EXIT` (integer)

`T_IF` (integer)

`T_ELSEIF` (integer)

`T_ELSE` (integer)

`T_ENDIF` (integer)

`T_LNUMBER` (integer)

`T_DNUMBER` (integer)

`T_STRING` (integer)

`T_STRING_VARNAME` (integer)

`T_VARIABLE` (integer)

`T_NUM_STRING` (integer)

`T_INLINE_HTML` (integer)

`T_CHARACTER` (integer)

`T_BAD_CHARACTER` (integer)

`T_ENCAPSED_AND_WHITESPACE` (integer)

`T_CONSTANT_ENCAPSED_STRING` (integer)

`T_ECHO` (integer)

`T_DO` (integer)

`T_WHILE` (integer)

`T_ENDWHILE` (integer)

`T_FOR` (integer)

`T_ENDFOR` (integer)

`T_FOREACH` (integer)

`T_ENDFOREACH` (integer)

`T_DECLARE` (integer)

`T_ENDDECLARE` (integer)

`T_AS` (integer)

`T_SWITCH` (integer)

`T_ENDSWITCH` (integer)

`T_CASE` (integer)

`T_DEFAULT` (integer)

`T_BREAK` (integer)

`T_CONTINUE` (integer)

`T_OLD_FUNCTION` (integer)

`T_FUNCTION` (integer)

`T_CONST` (integer)

`T_RETURN` (integer)

`T_USE` (integer)

`T_GLOBAL` (integer)

`T_STATIC` (integer)

`T_VAR` (integer)

`T_UNSET` (integer)

`T_ISSET` (integer)

`T_EMPTY` (integer)

`T_CLASS` (integer)

`T_EXTENDS` (integer)

`T_OBJECT_OPERATOR` (integer)

`T_DOUBLE_ARROW` (integer)

`T_LIST` (integer)

`T_ARRAY` (integer)

`T_LINE` (integer)

`T_FILE` (integer)

`T_COMMENT` (integer)

`T_ML_COMMENT` (integer)

  > 注意: `T_ML_COMMENT` is not defined in PHP 5. All comments in PHP 5 are of token `T_COMMENT`.

`T_DOC_COMMENT` (integer)

  > 注意: `T_DOC_COMMENT` was introduced in PHP 5.

`T_OPEN_TAG` (integer)

`T_OPEN_TAG_WITH_ECHO` (integer)

`T_CLOSE_TAG` (integer)

`T_WHITESPACE` (integer)

`T_START_HEREDOC` (integer)

`T_END_HEREDOC` (integer)

`T_DOLLAR_OPEN_CURLY_BRACES` (integer)

`T_CURLY_OPEN` (integer)

`T_PAAMAYIM_NEKUDOTAYIM` (integer)

`T_DOUBLE_COLON` (integer)

# 例

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

例 1. tokenizerによりコメントを削除する

`<?php $source = file_get_contents("somefile.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: // コメントの場合は何もしない break; default: // それ以外の場合 -> "そのまま"出力 echo $text; break; } } } ?>`

前のページ | ホーム | 次のページ
tidy_warning_count | 上に戻る | token_get_all