在php中读取txt文件的问题

时间:2010-07-03 16:55:49

标签: php html file

我正在寻找一种方法将文件读入数组并获得我想要的东西。

这是我用来将文件读入数组的代码

$Path = 'dewp/pix/info.txt';
$productsArray = file($dirPath, FILE_IGNORE_NEW_LINES);
foreach ($productsArray as $key => &$product) {
    $arr = explode("\t", $product);
    $product =array('album=' => $arr[0], 'singer=' => $arr[1], 'info=' => $arr[2]);
}
echo "$product['album']";

我的txt文件包含:

album= Prisoner
singer= Jackobson
info= Love song about GOD , so so so so .

但什么都没发生,我无法获得专辑 - 歌手或信息字符串!

我需要爆炸像album =这样的特殊字符串来找出值!

2 个答案:

答案 0 :(得分:4)

该数据看起来像.ini个文件,为什么不尝试使用parse_ini_file(),例如

<?php
$Path = 'dewp/pix/info.txt';
$product = parse_ini_file($path);
echo $product['album'];

如果您有多个产品,则可以使用

这样的文件
[some_product]
artist=Foo
singer=Bar
info=Lorem ipsum bla bla

[other_product]
artist=Foobar
singer=The Dude
info=Dolor sit amet bla bla bla

并做

<?php
$Path = 'dewp/pix/info.txt';
$products = parse_ini_file($path, true);
echo $products['some_product']['album'];

此外,在您的代码中,您设置变量$Path,然后在下一行使用$dirPath。它会覆盖循环中每一行的$product变量。

答案 1 :(得分:2)

这是因为你文件中的每一行都是数组中的一个元素,file()函数不会创建任何键,你必须用'='字符串拆分每个元素以获得两个元素的数组(一把钥匙和一个变量。)

$path = 'dewp/pix/info.txt';
$lines = file($path, FILE_IGNORE_NEW_LINES);
$product = array();
foreach ($lines as $line) {
    $arr = explode("= ", $line);
    $product[$arr[0]] = $arr[1];
}
echo "{$product['album']}";

注意: FILE_IGNORE_NEW_LINES标志只删除每个数组元素末尾的'\ n'。