2012-06-01 59 views
0

可能重複:
Parse PHP code to extract function names?使preg_split PHP函數

我工作的一個腳本來讀我的PHP文件,並得到所有的功能作爲返回。我使用preg_split()將我的文件分割成一組函數。

我無法寫入模式讓所有的函數返回時,函數的名稱包含單詞「功能」我接受任何其他解決方案/諮詢(遇到問題

預期輸出。:

array (
    0 => 'function write{$oneparam, $two, $three){return $two}', 
    1 => 'function read{$oneparam, $two, $tthree){returne $awesome}', 
    2 => 'function edit{$oneparam, $two, $three){return $two}, 
    3 => 'function delete{$oneparam, $two, $three){return $two}', 
    4 => 'function lastfunction{$oneparam, $two, $three){return $two}' 
) 
+0

使用正則表達式來分析編程語言是一個壞主意。 – ThiefMaster

+0

你應該爲此使用'preg_match_all'。 tokinizer雖然更精確的結果。讓我尋找重複... – mario

+0

任何其他解決方案? – user1431754

回答

1

你可以嘗試這樣的事情來捕捉只是名稱/聲明:

#(function\s+\w+\(.*?\)#s 

或者這包括函數體(假設ŧ在您的例子就像一個單行hey're):

#(function\s+\w+\(.*?\)\s*{.*?})#s 

It works for all of your test cases,並且沒有任何樣品的輸入或更多的細節,我不能進一步闡述。

+3

如果想捕獲完整的函數體,那麼'\ {。*?}'部分需要一個嵌套的捕獲組;可能是一個完整的語法表示(只有邊界可行)才能理解「字符串」中的花括號。 – mario

+0

「或者這包括函數的主體(假設它們在你的例子中是在一行上):」是預期的輸出 – user1431754

+0

得到了你的觀點:)。 – user1431754