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