token_get_all
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
token_get_all — Divide um dado fonte em tokens do PHP
Descrição
token_get_all() analisa o code
fornecido
em tokens da linguagem PHP usando o avaliador léxico do Zend engine.
Para uma lista dos tokens do avaliador, veja Lista de Tokens do Analisador, ou use token_name() para traduzir um valor de um token para sua representação em formato string.
Parâmetros
code
-
O código-fonte do PHP à ser avaliado.
flags
-
Flags válidas:
-
TOKEN_PARSE
- Reconhece a capacidade de usar palavras reservadas em contextos específicos.
-
Valor Retornado
Um array de identificadores de tokens. Cada identificador de token individual ou é um
caracter único (ex.: ;
, .
,
>
, !
, etc...),
ou um array com três elementos contendo o índice do token no elemento 0, a string
contendo o token original no elemento 1 e o número da linha no elemento 2.
Exemplos
Example #1 Exemplo de token_get_all()
<?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;
}
}
?>
O exemplo acima produzirá algo semelhante a:
Line 1: T_OPEN_TAG ('<?php ') Line 1: T_ECHO ('echo') Line 1: T_WHITESPACE (' ') Line 1: T_CLOSE_TAG ('?>')
Example #2 Exemplo de uso incorreto de token_get_all()
<?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;
}
}
?>
O exemplo acima produzirá algo semelhante a:
Line 1: T_INLINE_HTML ('/* comment */')
T_INLINE_HTML
em vez do esperado
T_COMMENT
. Isso ocorre porque nenhuma tag aberta foi usada no
código fornecido. Isso seria equivalente a colocar um comentário fora da
tag PHP em um arquivo normal.
Example #3 token_get_all() em uma classe usando um exemplo de palavra reservada
<?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;
}
}
?>
O exemplo acima produzirá algo semelhante a:
T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER
TOKEN_PARSE
, o penúltimo
token (T_STRING
) teria sido
T_PUBLIC
.
Veja Também
- PhpToken::tokenize() - Divide a fonte fornecida em tokens PHP, representados por objetos PhpToken
- token_name() - Pega o nome simbólico de um dado token do PHP