token_get_all
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
token_get_all — Divide la fuente dada en tokens PHP
Parámetros
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.
Valores devueltos
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.
Ejemplos
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('/* comment */');
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 ('/* comment */')
Ten en cuenta en el ejemplo anterior que la cadena se analiza como
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
Sin la bandera
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
Sin el uso de
TOKEN_PARSE
, el penúltimo token (
T_STRING
) hubiese sido
T_PUBLIC
.