проблема при чтении текстового файла в php - PullRequest
0 голосов
/ 03 июля 2010

Я ищу способ прочитать файл в массив и получить то, что я хочу.

это код, который я использовал для чтения файла в массив

$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']";

и мой текстовый файл содержит:

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

но ничего не произошло, и я не смог получить альбом - певец или информационную строку!

Мне нужно разбить специальные строки, такие как album =, чтобы узнать значения!

Ответы [ 2 ]

4 голосов
/ 03 июля 2010

Эти данные выглядят как .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 для каждой строки в цикле.

2 голосов
/ 03 июля 2010

Это потому, что каждая строка в вашем файле является элементом массива, функция 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' в конце каждого элемента массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...