token_get_all
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
token_get_all — Scinde un code source en éléments de base
Liste de paramètres
code
-
Le source PHP à analyser.
flags
-
Drapeaux valides :
Valeurs de retour
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.
Exemples
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;
}
}
?>
Résultat de l'exemple ci-dessus est 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;
}
}
?>
Résultat de l'exemple ci-dessus est similaire à :
Ligne 1 : T_INLINE_HTML ('/* commentaire */')
Il est à noter que dans le précédent exemple la chaîne est analysée comme une
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 un 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;
}
}
?>
Résultat de l'exemple ci-dessus est similaire à :
T_OPEN_TAG
T_WHITESPACE
T_CLASS
T_WHITESPACE
T_STRING
T_CONST
T_WHITESPACE
T_STRING
T_LNUMBER
Sans le drapeau
TOKEN_PARSE, le pénultième jeton
(
T_STRING) aurait dû être
T_PUBLIC.
Voir aussi
- PhpToken::tokenize() - Sépare le code source donné en tokens PHP, représentés par des objets PhpToken.
- token_name() - Retourne le nom d'un élément de code source