PHP kézikönyv
Előző |  | Következő

# CLIX. Tokenizer függvények

# Bevezetés

A tokenizer függvények egy interfészt biztosítanak a PHP tokenizerének a Zend Motorban. Ezeket a függvényeket használva megírhatod a saját PHP forráskódot analizáló vagy modósító programodat, a nyelvi specifikáció szótári szintű ismerete nélkül.

Lásd még a függeléket a tokenekről.

# Követelmények

Az itt leírt függvények használatához semmilyen külső függvénykönyvtár megléte nem szükségeltetik.

# Telepítés

A PHP 4.3.0-tól ezek a funkciók alaphelyzetben engedélyezve vannak. A régebbi verziókban a PHP-t a --enable-tokenizer konfigurálási opcióval kell lefordítanod. Eltávolíthatod a tokenizer támogastást a --disable-tokenizer opcióval.

A PHP Windows-os változata beépített támogatással rendelkezik eme kiterjesztéshez. Nincs szükség semmilyen kiterjesztés betöltésére, hogy az itt felsorolt függvényeket használhasd.

> Megjegyzés: Beépített tokenizer támogatás a PHP 4.3.0 verziótól van.

# Előre definiált állandók

Amikor a kiterjesztés már vagy be van fordítva a PHP-ba vagy dinamikusan be van töltve futásidőben, a tokenek ki vannak listázva (Q Függelék) és konstansonként vannak definiálva.

# Példák

Íme egy egyszerű PHP program, ami a tokenizert használja, amivel beolvas egy PHP fájlt, eltünteti az összes kommentet a forrásból és csak a tiszta kódot írja ki.

Példa 1. Kommentek eltüntetése tokenizerrel

`<?php
/*
* T_ML_COMMENT nem létezik PHP 5-ben.
* A következő három sor megvédi a
* visszafelé kompatibilitást.
*
* A következő két sor definiálja a csak PHP 5-ös T_DOC_COMMENT-et.,
* ami egy maszk a PHP 4-es T_ML_COMMENT-nek.
*/
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)) {
// egyszerű 1-karakter token
echo $token;
} else {
// token tömb
list($id, $text) = $token;
switch ($id) {
case T_COMMENT:
case T_ML_COMMENT: // ezt definiáltuk
case T_DOC_COMMENT: // és ezt
// nincs művelet megjegyzések esetén
break;
default:
// valami más -> kimenet "ahogyan van"
echo $text;
break;
}
}
}
?>`

Előző | Tartalom | Következő
tidyNode->isText | Fel | token_get_all