As funções de tokenizer formam uma interface para o
tokenizer do PHP imbutido no Engine Zend. Usando essas
funções você pode escrever ferramentas próprias para
análise e modificação de código PHP sem ter que lidar com a
especificação da linguagem em um nível léxico.
Veja também o apêndice sobre tokens.
Nenhuma biblioteca externa é necessária para compilar esta extensão.
Começando no PHP 4.3.0, essas funções estão habilitadas a menos que seja dito o contrário.
Para versões anteriores, você tem que configurar e compilar o PHP com
--enable-tokenizer. Você pode desabilitar
suporte à extensão tokenizer com --disable-tokenizer.
A versão para Windows do PHP
tem suporte embutido para esta extensão. Você não precisa carregar nenhuma extensão
adicional para utilizar essas funções.
Nota:
Suporte integrado para tokenizer está disponível a partir do PHP 4.3.0.
As contantes abaixo são definidas por esta extensão e somente
estarão disponíveis quando a extensão foi compilada com o PHP
ou carregada dinamicamente durante a execução.
- T_INCLUDE
(inteiro)
- T_INCLUDE_ONCE
(inteiro)
- T_EVAL
(inteiro)
- T_REQUIRE
(inteiro)
- T_REQUIRE_ONCE
(inteiro)
- T_LOGICAL_OR
(inteiro)
- T_LOGICAL_XOR
(inteiro)
- T_LOGICAL_AND
(inteiro)
- T_PRINT
(inteiro)
- T_PLUS_EQUAL
(inteiro)
- T_MINUS_EQUAL
(inteiro)
- T_MUL_EQUAL
(inteiro)
- T_DIV_EQUAL
(inteiro)
- T_CONCAT_EQUAL
(inteiro)
- T_MOD_EQUAL
(inteiro)
- T_AND_EQUAL
(inteiro)
- T_OR_EQUAL
(inteiro)
- T_XOR_EQUAL
(inteiro)
- T_SL_EQUAL
(inteiro)
- T_SR_EQUAL
(inteiro)
- T_BOOLEAN_OR
(inteiro)
- T_BOOLEAN_AND
(inteiro)
- T_IS_EQUAL
(inteiro)
- T_IS_NOT_EQUAL
(inteiro)
- T_IS_IDENTICAL
(inteiro)
- T_IS_NOT_IDENTICAL
(inteiro)
- T_IS_SMALLER_OR_EQUAL
(inteiro)
- T_IS_GREATER_OR_EQUAL
(inteiro)
- T_SL
(inteiro)
- T_SR
(inteiro)
- T_INC
(inteiro)
- T_DEC
(inteiro)
- T_INT_CAST
(inteiro)
- T_DOUBLE_CAST
(inteiro)
- T_STRING_CAST
(inteiro)
- T_ARRAY_CAST
(inteiro)
- T_OBJECT_CAST
(inteiro)
- T_BOOL_CAST
(inteiro)
- T_UNSET_CAST
(inteiro)
- T_NEW
(inteiro)
- T_EXIT
(inteiro)
- T_IF
(inteiro)
- T_ELSEIF
(inteiro)
- T_ELSE
(inteiro)
- T_ENDIF
(inteiro)
- T_LNUMBER
(inteiro)
- T_DNUMBER
(inteiro)
- T_STRING
(inteiro)
- T_STRING_VARNAME
(inteiro)
- T_VARIABLE
(inteiro)
- T_NUM_STRING
(inteiro)
- T_INLINE_HTML
(inteiro)
- T_CHARACTER
(inteiro)
- T_BAD_CHARACTER
(inteiro)
- T_ENCAPSED_AND_WHITESPACE
(inteiro)
- T_CONSTANT_ENCAPSED_STRING
(inteiro)
- T_ECHO
(inteiro)
- T_DO
(inteiro)
- T_WHILE
(inteiro)
- T_ENDWHILE
(inteiro)
- T_FOR
(inteiro)
- T_ENDFOR
(inteiro)
- T_FOREACH
(inteiro)
- T_ENDFOREACH
(inteiro)
- T_DECLARE
(inteiro)
- T_ENDDECLARE
(inteiro)
- T_AS
(inteiro)
- T_SWITCH
(inteiro)
- T_ENDSWITCH
(inteiro)
- T_CASE
(inteiro)
- T_DEFAULT
(inteiro)
- T_BREAK
(inteiro)
- T_CONTINUE
(inteiro)
- T_OLD_FUNCTION
(inteiro)
T_OLD_FUNCTION não é definida no PHP 5.
- T_FUNCTION
(inteiro)
- T_CONST
(inteiro)
- T_RETURN
(inteiro)
- T_USE
(inteiro)
- T_GLOBAL
(inteiro)
- T_STATIC
(inteiro)
- T_VAR
(inteiro)
- T_UNSET
(inteiro)
- T_ISSET
(inteiro)
- T_EMPTY
(inteiro)
- T_CLASS
(inteiro)
- T_EXTENDS
(inteiro)
- T_OBJECT_OPERATOR
(inteiro)
- T_DOUBLE_ARROW
(inteiro)
- T_LIST
(inteiro)
- T_ARRAY
(inteiro)
- T_LINE
(inteiro)
- T_FILE
(inteiro)
- T_COMMENT
(inteiro)
- T_ML_COMMENT
(inteiro)
T_ML_COMMENT não é definida no PHP 5.
Todos os comentários no PHP 5 são tokens de T_COMMENT.
- T_DOC_COMMENT
(inteiro)
T_DOC_COMMENT foi introduzido no PHP 5.
- T_OPEN_TAG
(inteiro)
- T_OPEN_TAG_WITH_ECHO
(inteiro)
- T_CLOSE_TAG
(inteiro)
- T_WHITESPACE
(inteiro)
- T_START_HEREDOC
(inteiro)
- T_END_HEREDOC
(inteiro)
- T_DOLLAR_OPEN_CURLY_BRACES
(inteiro)
- T_CURLY_OPEN
(inteiro)
- T_PAAMAYIM_NEKUDOTAYIM
(inteiro)
- T_DOUBLE_COLON
(inteiro)
- T_INTERFACE
(inteiro)
Apenas no PHP 5.
- T_IMPLEMENTS
(inteiro)
Apenas no PHP 5.
- T_CLASS_C
(inteiro)
Apenas no PHP 5.
- T_FUNC_C
(inteiro)
Apenas no PHP 5.
- T_METHOD_C
(inteiro)
Apenas no PHP 5.
- T_ABSTRACT
(inteiro)
Apenas no PHP 5.
- T_CATCH
(inteiro)
Apenas no PHP 5.
- T_FINAL
(inteiro)
Apenas no PHP 5.
- T_INSTANCEOF
(inteiro)
Apenas no PHP 5.
- T_PRIVATE
(inteiro)
Apenas no PHP 5.
- T_PROTECTED
(inteiro)
Apenas no PHP 5.
- T_PUBLIC
(inteiro)
Apenas no PHP 5.
- T_THROW
(inteiro)
Apenas no PHP 5.
- T_TRY
(inteiro)
Apenas no PHP 5.
- T_CLONE
(inteiro)
Apenas no PHP 5.
Aqui está um exemplo simples de scripts PHP usando o tokenizer que
lerá um arquivo PHP, retirará todos os comentários do fonte e
imprimirá apenas o código puro.
Exemplo 1. Retira os comentários com o tokenizer
<?php /* * T_ML_COMMENT não existe no PHP 5. * As três linhas seguintes definem ela para * preservar compatibilidade com versões anteriores. * * As duas linhas seguintes definem T_DOC_COMMENT que existe apenas no PHP 5, * que nós chamaremos como T_ML_COMMENT para o PHP 4. */ if (!defined('T_ML_COMMENT')) { define('T_ML_COMMENT', T_COMMENT); } else { define('T_DOC_COMMENT', T_ML_COMMENT); }
$source = file_get_contents('example.php'); $tokens = token_get_all($source);
foreach ($tokens as $token) { if (is_string($token)) { // token simples de 1 caracter echo $token; } else { // array de tokens list($id, $text) = $token; switch ($id) { case T_COMMENT: case T_ML_COMMENT: // Nós definimos essa case T_DOC_COMMENT: // e essa // não faz nada com os comentários break;
default: // Qualquer outra coisa, imprime como é echo $text; break; } } } ?>
|
|