Manual do PHP
Anterior |  | Próxima

# CLXVII. 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

Quando a extensão for ou compilado no PHP ou carregada dinamicamente em tempo de execução, os tokens listados em Apêndice R são definidos como constantes.

# 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::getParent | Acima | token_get_all