PHP - 解析 txt 文件

2022-08-30 13:19:45

我有一个包含以下详细信息的.txt文件:

ID^NAME^DESCRIPTION^IMAGES
123^test^Some text goes here^image_1.jpg,image_2.jpg
133^hello^some other test^image_3456.jpg,image_89.jpg

我想做的是解析这个广告,将值转换为更具可读性的格式,如果可能的话,可能将其转换为数组。

谢谢


答案 1

你可以通过这种方式轻松做到这一点

$txt_file    = file_get_contents('path/to/file.txt');
$rows        = explode("\n", $txt_file);
array_shift($rows);

foreach($rows as $row => $data)
{
    //get row data
    $row_data = explode('^', $data);

    $info[$row]['id']           = $row_data[0];
    $info[$row]['name']         = $row_data[1];
    $info[$row]['description']  = $row_data[2];
    $info[$row]['images']       = $row_data[3];

    //display data
    echo 'Row ' . $row . ' ID: ' . $info[$row]['id'] . '<br />';
    echo 'Row ' . $row . ' NAME: ' . $info[$row]['name'] . '<br />';
    echo 'Row ' . $row . ' DESCRIPTION: ' . $info[$row]['description'] . '<br />';
    echo 'Row ' . $row . ' IMAGES:<br />';

    //display images
    $row_images = explode(',', $info[$row]['images']);

    foreach($row_images as $row_image)
    {
        echo ' - ' . $row_image . '<br />';
    }

    echo '<br />';
}

首先使用该函数打开文本文件,然后使用函数剪切换行符上的字符串。这样,您将获得一个所有行分隔的数组。然后,使用该函数,您可以删除第一行,因为它是标题。file_get_contents()explode()array_shift()

获取行后,可以遍历数组并将所有信息放入名为 的新数组中。然后,您将能够从第零行开始获取每行的信息。例如,这将是.$info$info[0]['description']Some text goes here

如果您也想将图像放在数组中,也可以使用。只需将 this 用于第一行:explode()$first_row_images = explode(',', $info[0]['images']);


答案 2

使用 explode() 或 fgetcsv()

$values = explode('^', $string);

或者,如果你想要更好的东西:

$data = array();
$firstLine = true;
foreach(explode("\n", $string) as $line) {
    if($firstLine) { $firstLine = false; continue; } // skip first line
    $row = explode('^', $line);
    $data[] = array(
        'id' => (int)$row[0],
        'name' => $row[1],
        'description' => $row[2],
        'images' => explode(',', $row[3])
    );
}

推荐