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