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.
Note: 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 (Értelmező Tokenek Listája) é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.
Example#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;
}
}
}
?>
Table of Contents
- token_get_all — Megadott PHP forrás tokenenekké tördelése
- token_name — Kinyeri egy PHP token jelképes nevét