PHP Handbuch
Zurück |  | Weiter

# CLXVII. Tokenizer Funktionen

# Einführung

Die Tokenizer-Funktionen bieten eine Schnittstelle zum in PHP integrierten PHP-Tokenizer der Zend-Engine. Mit Hilfe dieser Funktionen ist es möglich ein eigenes Werkzeug zur PHP-Quelltextanalyse oder -modifikation zu entwickeln. Der Umgang mit der Sprachspezifikation auf lexikalischer Ebene wird nicht benötigt.

Siehe auch Anhang zu Tokens.

# Anforderungen

Diese Erweiterung benötigt keine externen Bibliotheken.

# Installation

Seit PHP 4.3.0 sind diese Funktionen standardmäßig aktiviert. Für ältere Versionen muß PHP mit der Option `--enable-tokenizer` konfiguriert und kompiliert werden. Die Unterstützung kann mit der Option `--disable-tokenizer` deaktiviert werden.

Die Windowsversion von PHP enthält diese Erweiterung. Um diese Funktionen zu verwenden, müssen Sie keine zusätzlichen Erweiterungen aktivieren.

> Anmerkung: Ab PHP 4.3.0 stehen die Funktionen standardmäßig zur Verfügung.

# Vordefinierte Konstanten

Sobald die Erweiterung mit PHP kompiliert wurde oder dynamisch zur Laufzeit geladen wurde, stehen die im Anhang R aufgelisteten Tokens als Konstanten zur Verfügung.

# Beispiele

Folgend ein einfaches Beispiel, dass den Tokenizer verwendet um eine PHP-Datei einzulesen, alle Kommentare zu entfernen und den reinen Quelltext auszugeben.

Beispiel 1. Kommentar mit Hilfe des Tokenizers entfernen
`<?php /* * T_ML_COMMENT steht in PHP 5 nicht zur Verfügung. * Die folgenden drei Zeilen definieren die Konstante * um Abwärtskompatibilität zu gewährleisten. * * Die nächsten zwei Zeilen definieren die nur in PHP 5 * verfügbare Konstante T_DOC_COMMENT, die für PHP 4 * mit T_ML_COMMENT maskiert wird. */ 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)) { // einfaches 1-Zeichen Token echo $token; } else { // Token Array list($id, $text) = $token; switch ($id) { case T_COMMENT: case T_ML_COMMENT: // wir haben diese case T_DOC_COMMENT: // und diese Konstante definiert // Kommentare ignorieren break; default: // alle anderen -> unverändert beibehalten echo $text; break; } } } ?>`

Zurück | Zum Anfang | Weiter
tidyNode::getParent | Nach oben | token_get_all