所以我有一個如何做到這一點的概念 - 但實際上實現我有點爲我自己的一個stumper;主要是由於我缺乏正則表達式的經驗 - 但讓我們進入它。如何將'PHP'文件的段分解爲原始PHP, - 和 - 可能的原始HTML - 在訂單中 -
我想「解析」通過「PHP」文件可能包含類似以下內容:
<?php
function Something()
{
}
?>
<html>
<body>
<? Something(); ?>
</body>
</html>
<?php
// Some more code or something
?>
如果恰好解釋 - 上面是毫無價值jibberish - 但它是一個很好的例子我希望能夠解析或解釋...
這個想法是,我會讀取上述文件的內容,並將其分解成各個部分的有序數組;同時跟蹤每個'段'的'類型',以便我可以簡單地回顯它,或者在其上運行'eval()'。
實際上,我想用一個數組這樣的事情結束了:
$FileSegments = array();
$FileSegments[0]['type'] = "PHP";
$FileSegments[0]['content'] = "
function Something()
{
}";
$FileSegments[1]['type'] = "HTML";
$FileSegments[1]['content'] = "
<html>
<body>";
$FileSegments[2]['type'] = "PHP";
$FileSegments[2]['content'] = "Something();"
等等......
最初的想法是簡單的「包括()」或' require()'有問題的文件,並從輸出緩衝區獲取它的輸出 - 但在我看來,我希望能夠在評估代碼之前爲這些文件中的每一個注入一些「頂級」變量。要做到這一點,我必須''注入(')我注入的代碼,與注入後的文件的內容 - 但爲了做到這一點的能力,在文件中處理原始HTML也,我必須基本上寫一個整個文件的臨時克隆,它只是在實際內容之前寫入了我的注入代碼......繁瑣且速度慢。
我希望你們都按照這裏......如果沒有我可以澄清...
唯一的其他部分我覺得我完成這項問題之前,應注意;是我想保留通常的變量或符號(例如,在部分0和2中創建的'Something()函數),並將它們傳遞給部分'4'...我覺得這可能會可以使用提取方法實現,然後在我的下一個片段執行之前手動寫入這些數據片段 - 但是我再次在黑暗中拍攝一些內容。
如果任何人有更好的方法,或者可以給我一些簡單的代碼,只是從文件中提取這些'段',我會欣喜若狂。
歡呼
ETA:它照在我,我也許可以多一點簡單地提出這個問題:如果沒有「簡單」的方式做以上,有沒有一種方法來處理'require()'和'include()'處理文件的相同方式的確切中的字符串?
如果你要解析一個PHP文件,然後不要使用正則表達式,而是使用PHP [tokeniser](http://php.net/manual/en/function.token-get-all。PHP)或[解析器](https://github.com/nikic/PHP-Parser)而不是 – 2015-02-23 21:54:30
我不明白爲什麼你需要解析文件注入頁面內容的變量。只要通過你的主要php文件傳遞所有內容,幷包含最初打算被調用的文件,這可以通過簡單的.htaccess重寫規則來完成。 – cmorrissey 2015-02-23 21:59:58
理想情況下(進一步評估)我想將所有'$ GLOBALS'變量分解爲每個正在執行的文件中的'簡單'名稱。例如;而不是必須在文件中鍵入'$ GLOBALS ['database']'三十次,我纔有能力使用'$ Database'變量。這可能對你沒有多大意義,這只是一個例子;但它仍然是我想達到的目標。如果你不能幫助,因爲你沒有看到這樣的必要性,但問題仍然存在。 – DigitalJedi805 2015-02-23 22:03:43