Forum und email

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