从文件内容

时间:2017-09-11 01:42:58

标签: php arrays

我有一个包含以下格式文本的php文件。

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

它基本上像数据库一样结构化,所以每一行都是一个记录和第一组""总是一个头衔。第二组""始终是一个URL,等等....逐行。

在任何想象中,我都不是一位经验丰富的程序员。从文件内容创建数组的最佳方法是什么?

我已经尝试了以下方法,但它没有奏效。

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

我相信我需要更新数据的结构和我用来创建数组的方法,但我不确定如何。任何帮助是极大的赞赏。

我希望能够从任何文本行检索标题,URL,imgURL或标签,但我不知道如何以数组格式表达它。

我想我希望能够请求$content[0][1]从第1行和$content[1][3]获取网址,以便从第2行获取标记。

3 个答案:

答案 0 :(得分:1)

您的文件格式称为CSV(逗号分隔值)。使用PHP,您可以使用函数fgetcsv解析CSV文件:http://php.net/manual/en/function.fgetcsv.php

答案 1 :(得分:1)

$file = fopen("path/content.php", "r");
while($content[] = fgetcsv($file, 1000, ","));

然后,您应该能够按照指定的方式访问每个元素:

echo $content[0][1]; // echos first line, url

答案 2 :(得分:0)

你在找这样的东西吗?

/**
 * 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
        )

)