【问题标题】:PHP CSV showing in tablePHP CSV 显示在表格中
【发布时间】:2014-11-10 19:51:56
【问题描述】:

我想以与图片相同的方式显示此 CSV 文件,但随后使用 PHP。 现在我知道如果它们都在“A”下,如何显示它, 但我现在不知道如何用一个以上的单元格显示它。

<?php
echo "<table border='1'>";
if (($handle = fopen("top10.csv", "r")) !== FALSE) {
    $data = fgetcsv($handle, 0, ",");
    while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
        echo "<tr>";
        $num = count($data);
        for ($i=0; $i < $num; $i++) {
            echo"<td>" . $data[$i] . "<br /> </td>";
        }
        echo "</tr>";
    }
    fclose($handle);
}
?> 

这就是我使用 2 行的方式。

图片:

现在的结果:

【问题讨论】:

  • 为什么要在表格单元格内放置一个中断标签?
  • 那么这段代码怎么不起作用?我看不出它为什么不会吐出与 csv 具有相同行/单元格的表格。
  • Jay Blanchard,嗨,您是指在 之后吗? @Marc B它工作但不正确,现在它显示一个单元格中的第一行,其余的也不是很合乎逻辑。稍等,我会上传结果。
  • 不,就在这里&lt;br /&gt; &lt;/td&gt;
  • 所以查看生成的 html 并找出它为什么不起作用。例如view source 在您的浏览器中。也许您的 csv 包含 html,并且其中有一些标签破坏了您的表格。

标签: php html-table import-from-csv


【解决方案1】:

您可能想要使用可以解析CSV 文件的SplFileObject。例如:

$file = new SplFileObject("/path/to/your/csv/file.csv");
$file->setFlags(SplFileObject::READ_CSV);
$rows = "";
foreach ($file as $row) {
    list ($a, $b, $c, $d, $e, $f, $g, $h, $i, $j, $k, $l) = $row;

    $rows .= <<<HTML
<tr>
    <td>${a}</td>
    <td>${b}</td>
    <td>${c}</td>
    <td>${d}</td>
    <td>${e}</td>
    <td>${f}</td>
    <td>${g}</td>
    <td>${h}</td>
    <td>${i}</td>
    <td>${j}</td>
    <td>${k}</td>
    <td>${l}</td>
</tr>
HTML;
}

echo "<table>".$rows."</table>";

PHP Documentation

【讨论】:

    【解决方案2】:

    您在代码中读取文件 2 次:

    $data = fgetcsv($handle, 0, ",");// 1st  (just remove this line)
    while (($data = fgetcsv($handle, 0, ",")) !== FALSE) { // 2nd
    

    还有另一个解决方案 试试这个:

    echo "<table border=\"1\">";
    $row=@explode("\n",@file_get_contents('test.csv'));
    if(count($row)>0) foreach($row as $r){
        $col=@explode(",",$r);
        echo "<tr>";
        foreach($col as $c){
            echo "<td>$c</td>";
        }
        echo "</tr>";
    }   
    echo "</table>";
    

    【讨论】:

    • 此解决方案通常适用于 csv 文件为几行的小型设置。一旦 csv 文件大小增加,您将面临性能显着下降。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-15
    • 1970-01-01
    • 2019-08-21
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多