可能是多维数组

时间:2014-01-08 19:38:24

标签: php arrays file-io multidimensional-array

我有两个需要打开的文件,我正在使用php文件来阅读它们

$lines = file('/home/program/prog_conf.txt');
foreach ($lines as $line) {
$rows = preg_split('/\s+/', $line);

其次是:

 $lines = file('/home/domain/public_html/base/file2.cfg');
 foreach ($lines as $line) {
 $rows = preg_split('/=/', $line);

当我处理这两个文件时,我需要从第二个文件中提取信息,我将其分隔=,但是,我不确定这是最好的事情。我想从数据库中添加数据检查。 db详细信息在第二个文件中,如下所示:

dbname = databasename
dbuser = databaseuser
dbpass = databasepassword

如果我回显$ rows [2],我会在一行中获取所有需要的信息,而不是单独的行。含义:

databasename databaseuser databasepassword

如何分割信息以便我可以逐个使用这些条目?

2 个答案:

答案 0 :(得分:0)

怎么样:

$lines = file('/home/domain/public_html/base/file2.cfg');
$all_parts = array()
foreach ($lines as $line) {
  //explode pulls apart a string based on the first value, so you could change that 
  //to a '=' if need be
  array_merge($all_parts,explode(' ', $line));
}

这将使文件的所有部分(一次一个)进入数组。这就是我认为你想要的。

如果没有,just explode as needed

答案 1 :(得分:0)

也许这种方法有帮助:

首先,因为我看到你的第二个文件有多行,所以会做的是这样的: 假设每个键都是“db”,我们可以做这样的事情。

$file = fopen("/home/domain/public_html/base/file2.cfg", "rb");
$contents = stream_get_contents($handle); // This function return better performance if the file isn't too large.
fclose($file);

// Assuming this is your return from the file
$contents = 'dbname = databasename dbuser = databaseuser dbpass = databasepassword';

$rows = preg_split('/db+/', $contents); // Splinting keys "db"
$result = array();
foreach($rows as $row){
   $temp = preg_replace("/\s+/", '', $row); // Removing extract white spaces
   $temp = preg_split("/=/", $temp);        // Splinting by "="
   $result[] = $temp[1];                    // Getting the value only
}

var_dump ($result);

我希望这有助于您尝试使用此代码,但可能只需稍加修改即可。