(PHP 4 >= 4.2.0, PHP 5, PHP 7)
token_get_all — Scinde un code source en éléments de base
$source
[, int $flags
= 0
] )
token_get_all() analyse la chaîne donnée
source
en utilisant l'analyseur lexical du moteur Zend.
Pour une liste des tokens, voir Liste des tokens de l'analyseur, ou utilisez la fonction token_name() pour traduire une valeur token dans une représentation sous forme de chaîne de caractères.
source
Le source PHP à analyser.
flags
Drapeux valides :
TOKEN_PARSE
- Reconnait la possibilité d'utiliser
les mots réservés dans des contextes spécifiques.
Un tableau contenant la liste des descriptions des éléments. Chaque élément du tableau peut être un caractère unique (i.e.: ;, ., >, !, etc.), ou un tableau contenant un identifiant de token dans l'élément 0, la représentation textuelle originale de ce token dans l'élément 1, et le numéro de la ligne dans l'élément 2.
Version | Description |
---|---|
7.0.0 |
Ajout du paramère optionnel flags avec le drapeau
TOKEN_PARSE .
|
5.2.2 | Les numéros de lignes sont retournés dans l'élément 2 |
Exemple #1 Exemple avec 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;
}
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Line 1: T_OPEN_TAG ('<?php ') Line 1: T_ECHO ('echo') Line 1: T_WHITESPACE (' ') Line 1: T_CLOSE_TAG ('?>')
Exemple #2 Exemple d'utilisation incorrecte de la fonction token_get_all()
<?php
$tokens = token_get_all('/* commentaire */');
foreach ($tokens as $token) {
if (is_array($token)) {
echo "Ligne {$token[2]} : ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
}
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Ligne 1 : T_INLINE_HTML ('/* comment */')
T_INLINE_HTML
plutôt que T_COMMENT
,
ce qui aurait pu être attendu. Ceci est dû au fait qu'aucune balise ouvrante n'a été
utilisée dans le code fourni. Cela correspond à mettre une commentaire en dehors
des balises PHP dans un fichier classique.
Exemple #3 token_get_all() dans une classe en utilisant un mot réservé
<?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;
}
}
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER
TOKEN_PARSE
, le pénultième jeton
(T_STRING
) aurait du être
T_PUBLIC
.