Funkcje tokenizera są interfejsem dostępu do wewnętrznego tokenizera
wbudowanego w silniku Zend. Używając tych funkcji możesz napisać swoje
własne narzędzia do analizy lub modyfikacji kodu PHP bez potrzeby
zajmowania się specyfikacją języka na poziomie analizy leksykalnej.
Patrz także dodatek o tokenach.
Do zbudowania tego rozszerzenia nie są wymagane
żadne zewnętrzne biblioteki.
Począwszy od PHP 4.3.0 funkcje te są dostępne domyślnie. Dla starszych
wersji musisz skonfigurować i skompilować PHP z opcją
--enable-tokenizer. Możesz wyłączyć
wsparcie tokenizera opcją --disable-tokenizer.
PHP w wersji dla systemów
Windows posiada wbudowaną obsługę dla tego rozszerzenia. Nie trzeba ładować
żadnych dodatkowych rozszerzeń aby korzystać z tych funkcji.
Notatka:
Wbudowane wsparcie dla tokenizera dostępne jest od PHP 4.3.0.
When the extension has either been compiled into PHP or dynamically loaded
at runtime, the tokens listed in Dodatek Q are defined as
constants.
Poniżej prosty skrypt PHP używający tokenizera który wczyta plik PHP,
usunie wszystkie komentarze ze źródła i wydrukuje tylko czysty kod.
Przykład 1. Usuwanie komentarzy przy pomocy tokenizera
<?php /* T_ML_COMMENT nie istnieje w PHP 5. * Następujące trzy linie definiują tą stała by zachować kompatybilność * wsteczną. * * Kolejne dwie linie definiują istniejącą tylko w PHP 5 stałą * T_DOC_COMMENT, którą w PHP 4 podmienimy jako T_ML_COMMENT. */ if (!defined('T_ML_COMMENT')) { define('T_ML_COMMENT', T_COMMENT); } else { define('T_DOC_COMMENT', T_ML_COMMENT); } $kod = file_get_contents("jakisplik.php"); $tokeny = token_get_all($kod); foreach ($tokeny as $token) { if (is_string($token)) { // prosty token jednoznakowy echo $token; } else { // tablica definiująca token list($id, $tekst) = $token; switch ($id) { case T_COMMENT: case T_ML_COMMENT: // to zdefiniowaliśmy case T_DOC_COMMENT: // to też // brak akcji dla komentarzy break; default: // wszystko inne -> drukuj "jakie jest" echo $tekst; break; } } } ?>
|
|