2013-05-22 40 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),并且从未因此而工作。从变量中剥离标签使脚本正常工作。

我的坏!