token_get_all
(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
token_get_all — Spaltet angegebenen PHP-Quelltext in PHP-Token auf
Beschreibung
$code
, int $flags
= 0): array
token_get_all() parst den angegebenen Quelltext
code
und spaltet ihn mit Hilfe des lexikalischen
Scanners der Zend-Engine in PHP-Sprachtokens auf.
Eine Übersicht über die verschiedenen Token finden Sie im Liste der Parsertoken oder Sie können die Funktion token_name() zum Übersetzen eines Tokens in seinen Textrepäsentanten verwenden.
Parameter-Liste
-
code
-
PHP-Quelltext der geparst werden soll.
-
flags
-
Gültige Flags:
-
TOKEN_PARSE
- Erkennt die Möglichkeit, reservierte Wörter unter bestimmten Umständen zu verwenden.
-
Rückgabewerte
Array mit Tokenbezeichner. Jeder einzelne Bezeichner ist entweder ein
einzelnes Zeichen (z.B.: ;
, .
,
>
, !
, usw.), oder ein Array
bestehend aus drei Elementen. Das erste Element enthält den Tokenindex, das
zweite Element den originalen Textinhalt und das dritte die Zeilennummer.
Beispiele
Beispiel #1 token_get_all()-Beispiel
<?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;
}
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Line 1: T_OPEN_TAG ('<?php ') Line 1: T_ECHO ('echo') Line 1: T_WHITESPACE (' ') Line 1: T_CLOSE_TAG ('?>')
Beispiel #2 Fehlerhaftes token_get_all()-Verwendungsbeispiel
<?php
$tokens = token_get_all('/* comment */');
foreach ($tokens as $token) {
if (is_array($token)) {
echo "Zeile {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
}
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Zeile 1: T_INLINE_HTML ('/* comment */')
T_INLINE_HTML
und nicht wie erwartet als
T_COMMENT
geparst wurde. Das liegt am fehlenden Start-Tag
im verwendeten Code. Das entspricht einem Kommentar außerhalb der PHP-Tags in
einer normalen Datei.
Beispiel #3 token_get_all() für eine Klasse, die ein reserviertes Wort benutzt
<?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;
}
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER
TOKEN_PARSE
-Flag würde das vorletzte Token
T_PUBLIC
statt T_STRING
sein.
Siehe auch
- PhpToken::tokenize() - Splits given source into PHP tokens, represented by PhpToken objects.
- token_name() - Gibt Bezeichner für ein PHP-Token zurück