Ein PHP-Regex PHP-Funktionen von Code-Dateien zu extrahieren
-
21-09-2019 - |
Frage
Ich versuche, einen PHP Regex Extrakt Funktionen von PHP-Quellcode zu machen. Bis jetzt habe ich eine rekursive Regex Extrakt alles zwischen {}, aber dann auch passt es Sachen wie if-Anweisungen. Wenn ich so etwas wie:
preg_match_all("/(function .*\(.*\))({([^{}]+|(?R))*})/", $data, $matches);
Es funktioniert nicht, wenn es mehr als 1 Funktion in der Datei ist (wahrscheinlich, weil es verwendet den ‚Funktion‘ Teil in der Rekursivität auch).
Gibt es eine Möglichkeit, dies zu tun?
Beispieldatei:
<?php
if($useless)
{
echo "i don't want this";
}
function bla($wut)
{
echo "i do want this";
}
?>
Danke
Andere Tipps
Verschoben hier von doppelter Frage: PHP, Regex und neue Linien
Regex Lösung:
$regex = '~
function #function keyword
\s+ #any number of whitespaces
(?P<function_name>.*?) #function name itself
\s* #optional white spaces
(?P<parameters>\(.*?\)) #function parameters
\s* #optional white spaces
(?P<body>\{.*?\}) #body of a function
~six';
if (preg_match_all($regex, $input, $matches)) {
print_r($matches);
}
P. S. Wie oben tokenizer vorgeschlagen ist vorzuziehen Weg zu gehen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow