我有一个包含以下格式文本的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行获取标记。
答案 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
)
)