あなたのコードは、このように単純化することができます。
$fileName = 'test.php';
$fileContent = file_get_contents($fileName);
preg_match_all('/function(.*?)Action()/', $fileContent, $matches);
$functions = $matches[1];
結果($functions
):
Array
(
[0] => edit
[1] => editGroup
)
いくつかの変更を使用してコードが続き
...
まず、何が発見された場合にはそうならば、配列にそれを追加し確認してください。ここでは作業コードは次のとおりです。
$source = "test.php";
$fh = fopen($source,'r');
$m = array();
while ($line = fgets($fh)) {
if(preg_match_all('/function(.*?)Action()/', $line, $matches)){
$m[] = $matches[1][0];
}
}
結果($m
):
Array
(
[0] => edit
[1] => editGroup
)
preg_match_allので、完全なパターンの数がと一致し、あなたは何をしたかどうかを確認するためにリターンを使用することができ返し見つかりました。ヒットした場合は、希望の値を配列に追加して、後で取得することができます。いないすべての行が一致しますので、あなたは、いくつかの空の結果を得るた
;)
追記:述べたように、あなたは()空白に気づくstring(5) " edit"
のようなものになってしまいます。私はpregを知らないので、私はあなたのためにそれを修正することはできません。私ができることは、$functions = array_map('trim', $matches[1]);
に変更することを提案します。結果は空ではありません。こちらをご覧ください:https://eval.in/612829 ---編集:遅すぎると、@FirstOneは彼のニックネームに値すると推測します。 – roberto06
質問について:あなたのコードが投稿したものと同じであることを確認してください。 – FirstOne
出力の冒頭にまだスペースがあることに注意する価値はありますが、それもエスケープする必要があります。 – roberto06