token_get_all
token_get_all
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
token_get_all - 将给定源分割为PHP令牌
描述
array token_get_all ( string $source [, int $flags = 0 ] )
token_get_all()
source
使用Zend引擎的词法扫描器将给定的字符串解析为PHP语言令牌。
有关解析器令牌的列表,请参阅解析器令牌列表,或使用token_name()将令牌值转换为其字符串表示形式。
参数
source
PHP源代码解析。
flags
有效标志:
- TOKEN_PARSE - Recognises the ability to use reserved words in specific contexts. Return Values An array of token identifiers. Each individual token identifier is either a single character (i.e.: ;, ., >, !, etc...), or a three element array containing the token index in element 0, the string content of the original token in element 1 and the line number in element 2. ChangelogVersionDescription7.0.0Added the optional flags parameter along with the TOKEN_PARSE flag.5.2.2Line numbers are returned in element 2ExamplesExample #1 token_get_all() example<?php $tokens = token_get_all('<?php echo; ?>' foreach ($tokens as $token) { if (is_array($token)) { echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL; } } ?>The above example will output something similar to:Line 1: T_OPEN_TAG ('<?php ') Line 1: T_ECHO ('echo') Line 1: T_WHITESPACE (' ') Line 1: T_CLOSE_TAG ('?>')Example #2 token_get_all() incorrect usage example<?php $tokens = token_get_all('/* comment */' foreach ($tokens as $token) { if (is_array($token)) { echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL; } } ?>The above example will output something similar to:Line 1: T_INLINE_HTML ('/* comment */') Note in the previous example that the string is parsed as T_INLINE_HTML rather than the expected T_COMMENT. This is because no open tag was used in the code provided. This would be equivalent to putting a comment outside of the PHP tags in a normal file. Example #3 token_get_all() on a class using a reserved word example <?php $source = <<<'code' <?php class A { const PUBLIC = 1; } code; $tokens = token_get_all($source, TOKEN_PARSE foreach ($tokens as $token) { if (is_array($token)) { echo token_name($token[0]) , PHP_EOL; } } ?>The above example will output something similar to:T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER Without the TOKEN_PARSE flag, the penultimate token (T_STRING) would have been T_PUBLIC. See Also
- token_name() - 获取给定PHP令牌的符号名称
token_name →