1

テキストファイルをPHPに解析するのに助けが必要です。このファイルはPHPスクリプトによって生成されるため、コンテンツのフォーマットを制御することはできません。テキストファイルは次のようになります。

2013年7月4日-2013年7月4日
キルトのベストレッグ
夏を大いに盛り上げるために、プレイハウスはフェスティバルの人々とチームを組みました。
kilt.jpg
1,1,0、
-

2013年7月8日〜2013年7月23日
ホットレッグ
はい、皆さん、それはすべて厚底靴、レジャースーツ、そしてクレイジーなヘアスタイルです。
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行のチャンクに分割できます(つまり、エントリごとに1つのアイテム)

$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 に答える