使用PHP将CSV文件显示为HTML表的问题


Problems with using PHP to display CSV file as HTML table

我试图在HTML表中显示两列,四行CSV文件。我有下面的代码,但它只显示第一行,我不明白为什么。

<html>
<head>
    <title>test</title>
</head>
<body>
    <table border=1>
        <?PHP
        $file_handle = fopen("oee1.csv", "r");
        while (!feof($file_handle) ) {
            $line_of_text = fgetcsv($file_handle, 1024);
            echo '<tr><td>' . $line_of_text[0] . '</td><td>' . $line_of_text[1] . '</td></tr>';
        }  
        fclose($file_handle);
        ?>
    </table>
</body>
</html>

csv文件如下:

test1, 1
test2, 2
test3, 3
test4, 4

您没有遍历每一行。试试这样做:

<!DOCTYPE html>
<html>
    <head>
        <title>+test</title>
    </head>
    <body>
        <?php
            if (($file_handle = fopen("data.csv", "r")) !== false) {
                $str = '';
                $str .= '<table>';
                while (($data = fgetcsv($file_handle, 1024, ",")) !== false) {
                    $str .= '<tr>';
                    foreach ($data as $key => &$value) {
                        $str .= "<td>$value</td>";
                    }
                    $str .= '</tr>';
                }
                fclose($file_handle);
                $str .= '</table>';
                echo $str;
            }
        ?>
    </body>
</html>
输出:

<table>
    <tbody>
        <tr>
            <td>test1</td>
            <td>1</td>
        </tr>
        <tr>
            <td>test2</td>
            <td>2</td>
        </tr>
        <tr>
            <td>test3</td>
            <td>3</td>
        </tr>
        <tr>
            <td>test4</td>
            <td>4</td>
        </tr>
    </tbody>
</table>

PS:确保你有权限,并且你的csv文件和你的php文件在同一个目录下。

参考:fgetcsv

尝试在循环的每次迭代中添加对fgets($file_handle);的调用,您必须以某种方式推进文件句柄指针