2013-05-22 41 views
1

我試圖存儲在一個PHP變量一個txt文件,我已經工作的功能,但是有一個問題,我真的不能繞到我的頭。PHP讀取文件到變量

我想讀的使用變量爲這樣的文件名的文件,當我這樣做,腳本不讀取文件,但是當我明確代碼名稱,它工作正常。

我有以下代碼:

$mga_file[] = "./MGA/mga_" . preg_replace("[^a-zA-Z]", "", trim(strtolower($ar_mga[0]))) . "_" . preg_replace("[^a-zA-Z]", "", trim(strtolower($db_producto))) . ".txt"; 
$mga_file[] = "./MGA/mga_" . preg_replace("[^a-zA-Z]", "", trim(strtolower($ar_mga[0]))) . "_led.txt"; 
$mga_file[] = "./MGA/mga_high_led.txt"; 
$mga_file[] = "./MGA/mga_high_".strtolower($db_producto).".txt"; 

我編輯的代碼想着我的變量$ar_mga[0]可能有其他字符,但它仍然無法正常工作。使用這個數組,下面的代碼,我有不同的結果:

foreach($mga_file as $file){ 
    $homepage = file_get_contents($file, FILE_USE_INCLUDE_PATH); 
    echo "[" . $file . "] : "; 
    echo "<pre>"; print_r($homepage); echo "</pre>"; 
}  

給了我下面的結果:

Array [$mga_file] 
(
    [0] => ./MGA/mga_high_led.txt //Not Working 
    [1] => ./MGA/mga_high_led.txt //Not Working 
    [2] => ./MGA/mga_high_led.txt //Working 
    [3] => ./MGA/mga_high_led.txt //Working 
) 

正如你可以看到,文件名是在所有4個值完全相同,我只能讀取最後2個值中的文件會發生什麼?

編輯: 我似乎忽略了一個龐大的細節,該$ar_mga[0]變量包含我試圖用價值,但它是封閉在一個span標籤(這是我從來沒有見過,直到我檢查的HTML頁面),並且從來沒有工作過因爲這個。從變量中剝離標籤使腳本正常工作。

我的壞!

+0

這真的很奇怪。文件名只是一個字符串,無論是否動態構建它都無關緊要。有一件潛在的問題是使用'FILE_USE_INCLUDE_PATH'。只要走一條絕對的道路,沒有理由不去。不要使用print_r()來打印字符串。 'print_r()'用於數組。一個好的調試值打印機是'var_dump()',如果你有遞歸使用'print_r'作爲後備。 – Halcyon

+0

我已經嘗試過使用絕對路徑,並且發生同樣的問題。 – desto

+0

當您嘗試閱讀文件時,該文件是否可用?它存在嗎? 'file_get_contents'的輸出是什麼?你有錯誤嗎? – Halcyon

回答

0

似乎我忽略了一個巨大的細節,$ar_mga[0]變量包含我試圖使用的值,但它包含在一個span標記(我從來沒有看到,直到我檢查了頁面html),並且從未因此而工作。從變量中剝離標籤使腳本正常工作。

我的壞!