2016-02-11 71 views
0

我需要通過文件夾中的php文件,即列出該文件夾中的所有php文件,讀取每個文件的內容,檢查是否存在幾個預定義的變量名代碼,如果存在,則讀取它們的值。作爲文本讀取PHP文件,提取變量值

例如說一個特定的php文件包含以下變量。

$value1 = 'value of one'; 
$value2 = 'value of two'; 

然後我的腳本應該能夠讀取該文件的內容,提取$ value1和$ value2的值。

有沒有更簡單的方法來做到這一點。

真的很好的幫助,如果你可以建議一個解決方案,將不勝感激。

我認爲正則表達式有幫助,但我不明白如何構建表達式來匹配代碼中的變量名稱。到目前爲止,我沒有與我的代碼,如果我進一步澄清我尋找正則表達式或類似的解決方案匹配/搜索模式類似於變量名稱,varibale名稱是先進的。

假定搜索變量被找到,則對於可變值的提取「在碼分配」時,可能的解決方案我看到的是字符串處理,我的意思替換含有比用空字符串變量值變量其他線的內容。除此之外,有沒有辦法獲得價值。

假設在代碼中,

所以正則表達式或其他解決方案是搜索字符串「$值1」 &「$值2」

那麼應該可以讀出&「價值「一值」兩個'作爲在代碼串中檢測到的各個變量的值。

+0

這些文件中包含了什麼以及這些變量爲什麼如此重要? –

+0

這是我的一個客戶使用的自定義迷你cms。他有許多內容頁面作爲php文件,某些內容被定義爲變量值。現在他需要我在前端實現一個搜索機制,擁有一個爬蟲cron作業,它遍歷文件並讀取內容。這是真的,他有什麼不是一個完美的解決方案,但在這種情況下,我必須做他想做的事情。 – GUIR

+0

怎麼樣使用而添加內容到數據庫中,我曾經提出的方法,然後從那裏搜索? –

回答

0

你可以做什麼requireinclude這些文件並比較$GLOBALS之前和之後的數組值。當然,如果包含的文件包含其他代碼立即執行,這將不起作用。

+0

謝謝。但是在這種情況下,可能有很多文件需要檢查,所以包含所有這些文件的確有我認爲的實際問題。 – GUIR

0

您可以使用PHP反射來檢查類。例如

的文件
<?php 
class Foo { 
    public $foo = 1; 
    public $bar = 2; 
} 

$foo = new Foo(); 

$reflect = new ReflectionClass($foo); 
$props = $reflect->getProperties(); 

foreach ($props as $prop) { 
    print "Property Name: " . $prop->getName() . "\n"; 
    print "Property Value: " . $prop->getValue($foo) . "\n"; 
} 

遍歷目錄,你可以使用glob

我希望這將解決您的問題。

+0

謝謝,但是PHP文件進行檢查的arent類,它們只包含程序的PHP代碼。 – GUIR

+0

IMO,對於元編程,你必須遵循一些標準,即面向對象的範例。因此,將您的程序代碼轉換爲oo,然後使用REFLECTION的豐富功能。 – rahulb