(PHP 4 >= 4.2.0, PHP 5, PHP 7)
token_get_all — Разбивает переданный исходный код на PHP-лексемы
$source
   [, int $flags = 0
  ] )
   Функция token_get_all() разбирает переданную строку source 
   в языковые лексемы PHP используя лексический сканер Zend Engine.
  
Список лексем смотрите в Список меток (tokens) парсера, или используйте token_name() для перевода значения лексемы в строковое представление.
sourceИсходный код PHP для разбора.
flagsКорректные флаги:
TOKEN_PARSE - Признает возможность использовать
          зарезервированные слова в определенных контекстах.
         
        Массив идентификаторов лексем. Каждый индивидуальный идентификатор лексемы это или одиночный символ (например, ;, ., >, !, другие...), или трехэлементный массив, содержащий индекс лексемы в нулевом элементе, строку с оригинальным содержимым лексемы в первом элементе и номером строки во втором элементе.
| Версия | Описание | 
|---|---|
| 7.0.0 | Добавлен необязательный параметр flags, который
        может принимать значениеTOKEN_PARSE. | 
| 5.2.2 | Номера строк возвращаются в элементе 2. | 
Пример #1 token_get_all() example
<?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;
    }
}
?>
Результатом выполнения данного примера будет что-то подобное:
Line 1: T_OPEN_TAG ('<?php ')
Line 1: T_ECHO ('echo')
Line 1: T_WHITESPACE (' ')
Line 1: T_CLOSE_TAG ('?>')
Пример #2 Пример неправильного использования token_get_all()
<?php
$tokens = token_get_all('/* комментарий */');
foreach ($tokens as $token) {
    if (is_array($token)) {
        echo "Line {$token[2]}: ", token_name($token[0]), " ('{$token[1]}')", PHP_EOL;
    }
}
?>
Результатом выполнения данного примера будет что-то подобное:
Line 1: T_INLINE_HTML ('/* комментарий */')
T_INLINE_HTML
   вместо ожидаемого T_COMMENT.
   Это происходит потому, что не используется открывающего тега в "коде".
   Это будет эквиалентно помещению комментариев вне тегов PHP в нормальном файле.
  
  
Пример #3 Пример использования token_get_all() с классом, использующим зарезервированные слова
<?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;
    }
}
?>
Результатом выполнения данного примера будет что-то подобное:
T_OPEN_TAG T_WHITESPACE T_CLASS T_WHITESPACE T_STRING T_CONST T_WHITESPACE T_STRING T_LNUMBER
TOKEN_PARSE, предпоследний токен
   (T_STRING) был бы T_PUBLIC.