(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
token_get_all — Scinde un code source en éléments de base
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 jetons 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.
code
Le source PHP à analyser.
flags
Drapeaux 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.
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('');
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 ('')
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;
}
}
?>
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
TOKEN_PARSE
, le pénultième jeton (T_STRING
) aurait du être T_PUBLIC
.