次のような形式の関数のリストを含むファイルがあります。
function foo(){
...code { code{} } code...
}
この特定のファイルでは、常に「関数」という単語を一番左に配置し、終わりの中括弧を一番左に配置します。通常どおり、関数内のコードは常にインデントされます。関数内のコードには、中かっこを含む任意の文字を含めることができます。
PHPでファイルを解析して、関数の名前がキーである関数の連想配列を取得したいと思います。私はこれを始めたばかりです。これは非常に簡単なスタートです。
$regex = "/function.*/";
preg_match_all($regex, $str, $result, PREG_PATTERN_ORDER);
$arr = $result[0];
print_r($arr);
これにより、次が生成され、新しい行ごとに停止します。
Array
(
[0] => function foo(){
[1] => function bar(){
[2] => function stop(){
[3] => function go(){
)
正規表現を次のように変更してみました:
$regex = "/function.*\n}$/s";
私の考えでは、改行文字の直後に終了中括弧\n}$
が続く場合、関数の最後に一致すると考えていました。ただし、これは機能しません。その後のすべてを含む 1 つの長い要素を持つ配列が生成されます。function foo()
連想配列のキーに関数名を入れ始めていません。