(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
token_get_all — Divide la fuente dada en tokens PHP
token_get_all() parsea el string de la source
dada en tokens PHP usando el escaneador de léxico de Zend Engine.
Para ver la lista de los tokens analizados, vea Lista de componentes léxicos del analizador, o use token_name() para traducir un valor token en su representación en string.
source
La fuente PHP a analizar.
flags
Banderas válidas:
TOKEN_PARSE
- Reconoce la capacidad de usar palabras reservadas en contextos específicos. flags
Valores válidos:
TOKEN_PARSE
- Reconoce la capacidad de usar palabras reservadas en contextos específicos. Un array de tokens identificadores. Cada token identificador individual es al mismo tiempo un carácter único (por ejemplo: ;
, .
, >
, !
, etc...), un array de tres elementos conteniendo el índice de token en el elemento 0, el contenido del string del token original en el elemento 1 y el número de línea en el elemento 2.
Ejemplo #1 token_get_all() ejemplos
<?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;
}
}
?>
El resultado del ejemplo sería algo similar a:
Line 1: T_OPEN_TAG ('<?php ') Line 1: T_ECHO ('echo') Line 1: T_WHITESPACE (' ') Line 1: T_CLOSE_TAG ('?>')
Ejemplo #2 token_get_all() ejemplo de uso incorrecto
<?php
$tokens = token_get_all('');
foreach ($tokens as $token) {
if (is_array($token)) {
echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
}
}
?>
El resultado del ejemplo sería algo similar a:
Line 1: T_INLINE_HTML ('')
T_INLINE_HTML
en lugar del esperado T_COMMENT
. Esto se debe a que no se utilizó ninguna etiqueta de apertura en el código proporcionado. Esto sería equivalente a colocar un comentario fuera de las etiquetas PHP en un archivo normal. Ejemplo #3 token_get_all() en un ejemplo de clase que usa una palabra 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;
}
}
?>
El resultado del ejemplo sería algo similar a:
T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER
TOKEN_PARSE
, el penúltimo token (T_STRING
) habría sido T_PUBLIC
. Ejemplo #4 ejemplo de token_get_all() usado en una clase con una palabra 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;
}
}
?>
El resultado del ejemplo sería algo similar a:
T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER
TOKEN_PARSE
, el penúltimo token (T_STRING
) hubiese sido T_PUBLIC
.