1

在将文本文件解析为 PHP 时需要一些帮助。该文件由 PHP 脚本生成,因此我无法控制内容格式。文本文件如下所示:

2013 年 7 月 4 日至 2013 年 7 月 4 日
苏格兰短裙中的最佳美腿
为了以一声巨响开始这个夏天,剧场与电影节的人们合作。
kilt.jpg
1,1,0,
-

7/8/2013-7/23/2013
Hot Legs
是的,伙计们,都是厚底鞋、休闲套装和疯狂的发型。
hotstuff.jpg
1,1,0,
-

我到目前为止的代码是:

$content = file_get_contents('DC_PictureCalendar/admin/database/cal2data.txt');

list($date, $showname, $summary, $image, $notneeded, $notneeded2) = explode("\n", $content);

echo 'Show Name' . $showname . '<br/>';

这只会让我获得第一个节目标题,我需要抓住所有这些。我确信 For 循环会做到这一点,但不确定如何根据文件的内容来做到这一点。我只需要第 2 行(显示标题)和第 4 行(图像)。有什么帮助吗?提前致谢。

4

1 回答 1

2

如果您无论如何要将整个文件读入一个数组,那么只需使用file()它将每行读入一个数组。

$content = file('DC_PictureCalendar/admin/database/cal2data.txt', FILE_IGNORE_NEW_LINES);

然后,您可以像这样过滤所有不需要的行

$content = array_diff($content, array('1,1,0', '-'));

然后,您可以分成每行 4 行的块(即每个条目一个项目)

$content_chunked = array_chunk($content, 4);

这会给你一个像

Array(
    0 => Array(
        0 => '7/4/2013-7/4/2013',
        1 => 'Best Legs in a Kilt',
        2 => 'To start the summer off with a bang, the Playhouse has teamed up with the folks at The Festival.',
        3 => 'kilt.jpg'
    ),
    1 => Array(
        0 => '7/8/2013-7/23/2013',
        1 => 'Hot Legs',
        2 => 'Yes, folks, it's all platform shoes, leisure suits, and crazy hair-do's.',
        3 => 'hotstuff.jpg'
    ) ... etc.
)

然后,我会将这个数组映射到一个有用的对象数组中,这些对象的属性名称对您来说是有意义的:

$items = array_map(function($array)) {
    $item = new StdClass;
    $item->date = $array[0];
    $item->showname = $array[1];
    $item->summary = $array[2];
    $item->image = $array[3];
    return $item;
}, $content_chunked);

这会给你留下一个对象数组,比如:

Array(
    0 => stdClass(
        'date' => '7/4/2013-7/4/2013',
        'showname' => 'Best Legs in a Kilt',
        'summary'  => 'To start the summer off with a bang, the Playhouse has teamed up with the folks at The Festival.',
        'image' => 'kilt.jpg'
    ),
    1 => stdClass(
        'date' => '7/8/2013-7/23/2013',
        'showname' => 'Hot Legs',
        'summary' => 'Yes, folks, it's all platform shoes, leisure suits, and crazy hair-do's.',
        'image' => 'hotstuff.jpg'
    ) ... etc.
)
于 2013-01-31T01:11:42.507 回答