Manual do PHP
Anterior |  | Próxima

# CXXVI. Funções de Tokenizer

# Introdução

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.

# Dependências

Nenhuma biblioteca externa é necessária para compilar esta extensão.

# Instalaçã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.

# Constantes pré-definidas

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.

# Exemplos

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; } } } ?>`

Anterior | Principal | Próxima
tidyNode->isPhp | Acima | token_get_all