从 csv 文件创建页面

Creating pages from a csv file

提问人:user2367177 提问时间:10/16/2021 更新时间:10/16/2021 访问量:320

问:

我创建了一个页面,该页面从 CSV (http://liamjken.com/aim-parse/aim-websites-new.csv) 中获取数据并将其显示在此页面上 http://www.liamjken.com/aim-parse/parse.php?17

?17 引用 CSV 文件中的行。因此,如果我将其更改为 ?10,它会从另一行中提取信息。

我想做的不是使用行号,而是使用 $vin_num 值。因此,如果我将 ?1FMCU9GD9KUC40413 放在 URL 的末尾,它将显示包含该数字的行。

这是我目前拥有的代码,它基本上是从我发现的多个不同趋势中拼凑而成的,所以如果您注意到其他潜在问题,我很高兴听到它们。

<?php
$qstring = $_SERVER['QUERY_STRING'];
$row = $qstring; // The row that will be returned.
$data = get_row('aim-websites-new.csv', $row);
'<pre>'.print_r($data).'</pre>';

function get_row($csv, $row) {
    $handle = fopen("$csv", 'r');
    $counter = 0;
    $result = '';
    while ( ($data = fgetcsv($handle)) !== FALSE ) {
        $counter++;
        if ( $row == $counter ) {
          $vin_num="$data[12]";
          $model="$data[10]";
          $make="$data[9]";
          $year="$data[8]";
          ob_start();
?>

<h1>VIN: <?php echo $vin_num; ?></h1>
<h1>Year: <?php echo $year; ?></h1>
<h1>Make: <?php echo $make; ?></h1>
<h1>Model: <?php echo $model; ?></h1>

 
<?php
$output = ob_get_clean();
ob_flush();

return $output;
        }
        
    }
}
 


 ?>
php csv 解析 查询字符串 fgetcsv

评论

0赞 dmikester1 10/16/2021
您必须梳理整个 CSV 以搜索该 VIN 号。这可能需要一段时间,具体取决于 CSV 的大小。基本上创建一个 while 循环来寻找该 vin 号,一旦找到,就可以做你想做的事。

答:

0赞 Jacob Mulquin 10/16/2021 #1
<?php

function extract_data($file)
{
    $raw = file($file); // file() puts each line of file as string in array
    $keys = str_getcsv(array_shift($raw)); // extract the first line and convert into an array
    
    // Look through the rest of the lines and combine them with the header
    $data = [];
    foreach ($raw as $line) {
        $row = str_getcsv($line);
        $data[] = array_combine($keys, $row);
    }

    return $data;
}

function get_record($data, $vin)
{
    foreach ($data as $record) {
        if ($record['VIN'] === $vin)
            return $record;
    }
    return null;
}

$data = extract_data('aim-websites-new.csv');
$vin = $_SERVER['QUERY_STRING'];
if (empty($vin)) {
    echo '<h1>No VIN provided</h1>';
    exit;
}

$record = get_record($data, $vin);

if ($record === null) {
    echo '<h1>No record found</h1>';
    exit;
}

echo '<h1>' . $record['VIN'] . '</h1>';
echo '<h1>' . $record['Year'] . '</h1>';
echo '<h1>' . $record['Make'] . '</h1>';
echo '<h1>' . $record['Model'] . '</h1>';

echo '<pre>' . print_r($record, true) . '</pre>';

如果您不相信记录将具有有效的 VIN,则可以使用此处发布的代码进行验证:如何验证 VIN 号?

评论

1赞 user2367177 10/19/2021
这正是我一直在寻找的,谢谢