Mailinglisten-Archive |
Hi,
On Tuesday 22 March 2005 16:40, Steffen Kother wrote:
> Ich würde gern an einer RegEx-Lösung weiterbasteln. Tokenizer ist mir
> zu komplex bzw. für das bissl was ich will zu viel.
Wenn Reflection-API nicht passt ist der Tokenizer ganz genau das richtige. Bei
irgendwelchen Regex-Lösungen hast du zu viele Fallen drin, der Tokenizer
verwendet direkt den Parser aus der Engine und somit die selben Regeln um die
Datei aufzuteilen.
$tokens = token_get_all($code);
und dann über $tokens iterieren und immer bei einem T_CLASS oder T_FUNCTION
Token den wert des nächsten T_STRING Tokens auslesen....
Grob (ungetestet) runtergeschmiert:
foreach ($tokens AS $token) {
if ($in_function || $in_class && $token[0] == T_STRING) {
echo "Funktion bzw. Klasse $token[1]";
$in_function = false;
$in_class = false
continue;
}
if ($token[0] == T_CLASS) {
$in_class = true;
} elseif ($token[0] == T_FUNCTION) {
$in_function = true;
}
}
johannes
php::bar PHP Wiki - Listenarchive