У меня есть файл php, который содержит текст в следующем формате.

line 1 -   "Title","URL","imgURL","tags"
line 2 -   "Title","URL","imgURL","tags"
line 3 -   "Title","URL","imgURL","tags"

Он в основном структурирован как база данных, поэтому каждая строка является записью, а первый набор «» всегда является заголовком. 2-й набор "" - это всегда URL и т. Д. .... построчно.

Я не опытный программист в любой степени воображения. Каков наилучший способ создать массив из содержимого файла?

Я попробовал следующее, но это не сработало.

$content = array(file_get_contents("path/content.php"));

Я считаю, что мне нужно обновить структуру данных и метод, который я использую для создания массива, но я не уверен, как. Любая помощь очень ценится.

Я хочу получить заголовок, URL, imgURL или теги из любой строки текста, но я не знаю, как это выразить в формате массива.

Я думаю, что хочу иметь возможность запросить $content[0][1] для получения URL-адреса из строки1 и $content[1][3] для получения тегов из строки2.

-1
Mr. B 11 Сен 2017 в 04:42

3 ответа

Лучший ответ
$file = fopen("path/content.php", "r");
while($content[] = fgetcsv($file, 1000, ","));

После этого вы сможете получить доступ к каждому элементу, как вы указали:

echo $content[0][1]; // echos first line, url
1
Enstage 11 Сен 2017 в 01:57

Вы ищете что-то подобное?

/**
 * Decodes a full CSV file to an array.
 *
 * @param string $file File to decode
 *
 * @throws \Exception
 *
 * @return array[]
 */
function csv_decode($file) {
    $fh = fopen($file, 'r');

    if($fh === false)
    {
        // FIXME: You should replace this with your own exception!
        throw new \Exception("Failed to open file '$file' for reading");
    }

    $rows = [];
    while ($row = fgetcsv($fh))
    {
        $rows[] = $row;
    }

    return $rows;
}

Формат, с которым вы столкнулись, известен как CSV (что означает значения, разделенные запятыми)

Вышеприведенная функция декодирует ваши данные в массив с описанной вами структурой, что видно из вывода следующего фрагмента при выполнении данных вашего примера:

print_r(csv_decode('values.txt'));

Какие выводы:

Array
(
    [0] => Array
        (
            [0] => Title
            [1] => URL
            [2] => imgURL
            [3] => tags
        )

    [1] => Array
        (
            [0] => Title
            [1] => URL
            [2] => imgURL
            [3] => tags
        )

    [2] => Array
        (
            [0] => Title
            [1] => URL
            [2] => imgURL
            [3] => tags
        )

)
0
J0sh0nat0r 11 Сен 2017 в 02:04

Формат вашего файла называется CSV (значения, разделенные запятыми). Используя PHP, вы можете анализировать CSV-файл, используя функцию fgetcsv: http: //php.net/manual/en/function.fgetcsv.php

1
Joshua Jones 11 Сен 2017 в 01:49