2011-10-18 55 views
0

exapmle解析大括號內的文本,但不要停在內部右括號?

function hello(){ 
    echo 'hello'; 
    foreach (array(1,2,3) as $n) 
    { 
     echo $n; 
    } 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
} 
function hi(){} 

我需要的一切,這是外部大括號,忽略任何內大括號,所以我的結果不會是這樣的

{ 
    echo 'hello'; 
    foreach (array(1,2,3) as $n) 
    { 
     echo $n; 
    } 

{ 
    echo 'hello'; 
    foreach (array(1,2,3) as $n) 
    { 
     echo $n; 
    } 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
    echo 'bye-bye'; 
} 
function hi(){} 
+0

你是什麼意思?你爲什麼不刪除你不想要的問題? – hakre

回答

1

在一般情況下,這不適用於正則表達式。您需要使用專爲該任務設計的解析器,或者編寫您自己的解析器。

對於基本功能,你並不需要太多:讀一個字符時,保持你有多少未關閉的括號在任何一個點的計數,並考慮解析完成後,這個數字從1下降到0

下一步是識別常見的字符串文字(單引號和雙引號),並正確地跳過這些字符串中的任何字面大括號,這足以讓您獲得90%的方式。

更新:here's an asnwer到一個類似的問題,還包括示例代碼(雖然它是在C#而不是PHP)。

+0

+1您必須使用解析器執行此類任務。 – FailedDev