PHP.nl

token_get_all

token_get_all

Split given source into PHP tokens

array **token_get_all** string $code int $flags
parses the given  

string into PHP language tokens using the Zend engine's lexical scanner. token_get_all``code

For a list of parser tokens, see , or use to translate a token value into its string representation. token_name

codeThe PHP source to parse.

flags Valid flags:

  - - Recognises the ability to use           reserved words in specific contexts.          `TOKEN_PARSE`

An array of token identifiers. Each individual token identifier is either a single character (i.e.: , , , , etc...), or a three element array containing the token index in element 0, the string content of the original token in element 1 and the line number in element 2. ;``.``>``!

Voorbeeld: 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 ('?>')

Note in the previous example that the string is parsed as rather than the expected . This is because no open tag was used in the code provided. This would be equivalent to putting a comment outside of the PHP tags in a normal file. Voorbeeld: incorrect usage example

<?php
$tokens = token_get_all('/* comment */');

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 ('/* comment */')

T_INLINE_HTML``T_COMMENT

Without the flag, the penultimate token () would have been . **Voorbeeld: on a class using a reserved word example **

<?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

PhpToken::tokenize``token_name