A PHPはコードファイルからPHPの関数を抽出するために、regexで
-
21-09-2019 - |
質問
私は、PHPのソースコードから抽出機能にPHPの正規表現を作成しようとしています。今まで、私は} {の間エキスすべてに再帰的な正規表現を使用しますが、それはまた、if文のようなものと一致しました。私はのようなものを使用する場合:
preg_match_all("/(function .*\(.*\))({([^{}]+|(?R))*})/", $data, $matches);
これ以上の1つの機能は、ファイル内に存在するとき(それはあまりにも再帰に「関数」の部分を使用して、おそらくため)仕事をしません。
これを行うにはどのような方法は?あります。
サンプルファイル:
<?php
if($useless)
{
echo "i don't want this";
}
function bla($wut)
{
echo "i do want this";
}
?>
おかげ
解決
正規表現は、それを行うには間違った方法です。考えてみましょうトークナイザのか<のhref = "http://php.net /manual/en/book.reflection.php」REL = "noreferrer">反射する
他のヒント
PHP、正規表現と新しい行する >
正規表現解決策ます:
$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。 行くための望ましい方法ですトークナイザ上で示唆された。
所属していません StackOverflow