如何使用PHP从CSV文件为每行创建静态HTML表文件?

如何使用PHP从CSV文件为每行创建静态HTML表文件?,php,html,html-table,import-from-csv,Php,Html,Html Table,Import From Csv,我想自动创建静态HTML站点,每个站点中只有一个表。其全部目的是使用基本元数据(约4000个数据集)构建一个小型库集合。 我在一个以分号分隔的文本文件(CSV)中获取数据。 现在,对于CSV文件中的每一行,我想创建一个表,格式如下: <table> <tr> <td >Title:</td><td>A Game of Thrones</td> </tr> <tr> <td >Author

我想自动创建静态HTML站点,每个站点中只有一个表。其全部目的是使用基本元数据(约4000个数据集)构建一个小型库集合。 我在一个以分号分隔的文本文件(CSV)中获取数据。 现在,对于CSV文件中的每一行,我想创建一个表,格式如下:

<table>
<tr>
<td >Title:</td><td>A Game of Thrones</td> 
</tr>
<tr>
<td >Author:</td><td>Martin, George R.R.</td>
</tr>
<tr>
<td >Published:</td><td>New York : Bantam Books</td> 
</tr>
<tr>
<td >Year:</td><td>1996</td>
</tr>
</table>
<tr>
<td>Author:</td><td>$data[1]</td>
</tr>
<tr>
<td>Published</td><td>$data[2]</td> 
</tr>
<tr>
<td>Year:</td><td>$data[3]</td>
</tr>
<tr> 
<table>
<tr>
<td >Title:</td><td>A Game of Thrones</td> 
</tr>
<tr>
<td >Author:</td><td>Martin, George R.R.</td>
</tr>
<tr>
<td >Published:</td><td>New York : Bantam Books</td> 
</tr>
<tr>
<td >Year:</td><td>1996</td>
</tr>

<?php
$row = 1;
if (($handle = fopen("10Titel_Semi.txt", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    $num = count($data);
    echo "<tr>";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo "<td>" . $data[$c] . "</td>";
    }
    echo "</tr>";
}
fclose($handle);
}
?>

</table>

标题:权力的游戏
作者:马丁,乔治R.R。
出版:纽约:班塔姆图书
年份:1996年
因此,将行中的每个字段分配给第一个td中的“fieldname”非常重要。 另外,我想在本地将表保存在HTML文件中。 我试图以某种方式打印echo,但似乎不可能(我猜是因为echo不像变量那样工作)。 另外,我知道从MYSQL中提取数据的动态脚本可能会更容易,但由于某些原因,静态HTML站点更适合我的需要。 我发现这个例子:

<?php
$row = 1;
if (($handle = fopen("10Titel_Semi.txt", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    $num = count($data);
    echo "<p> $num Felder in Zeile $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
}
fclose($handle);
}
?>

但它只是把所有的信息写得直截了当。 因此,必须对每一行进行某种循环,然后给出一个HTML文件(文件名是每一行的ID)。我用数组和foreach循环做了很多尝试,但还没有得到所有的机制。 这是可能的,还是有人有更好的主意? 由于我对PHP完全不熟悉,而且对编程也几乎不熟悉,所以如果能得到一些帮助,我将不胜感激。代码不需要优雅或其他什么,我只需要它工作

编辑:我想到了这样的事情:

<table>
<tr>
<td >Title:</td><td>A Game of Thrones</td> 
</tr>
<tr>
<td >Author:</td><td>Martin, George R.R.</td>
</tr>
<tr>
<td >Published:</td><td>New York : Bantam Books</td> 
</tr>
<tr>
<td >Year:</td><td>1996</td>
</tr>
</table>
<tr>
<td>Author:</td><td>$data[1]</td>
</tr>
<tr>
<td>Published</td><td>$data[2]</td> 
</tr>
<tr>
<td>Year:</td><td>$data[3]</td>
</tr>
<tr> 
<table>
<tr>
<td >Title:</td><td>A Game of Thrones</td> 
</tr>
<tr>
<td >Author:</td><td>Martin, George R.R.</td>
</tr>
<tr>
<td >Published:</td><td>New York : Bantam Books</td> 
</tr>
<tr>
<td >Year:</td><td>1996</td>
</tr>

<?php
$row = 1;
if (($handle = fopen("10Titel_Semi.txt", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    $num = count($data);
    echo "<tr>";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo "<td>" . $data[$c] . "</td>";
    }
    echo "</tr>";
}
fclose($handle);
}
?>

</table>

作者:$data[1]
已发布$data[2]
年份:$数据[3]
在这里,我将每行的数组作为HTML表中的变量。。。
希望这有助于理解我的问题

如果在该代码中循环行和列,则应执行以下操作:

<table>
<tr>
<td >Title:</td><td>A Game of Thrones</td> 
</tr>
<tr>
<td >Author:</td><td>Martin, George R.R.</td>
</tr>
<tr>
<td >Published:</td><td>New York : Bantam Books</td> 
</tr>
<tr>
<td >Year:</td><td>1996</td>
</tr>
</table>
<tr>
<td>Author:</td><td>$data[1]</td>
</tr>
<tr>
<td>Published</td><td>$data[2]</td> 
</tr>
<tr>
<td>Year:</td><td>$data[3]</td>
</tr>
<tr> 
<table>
<tr>
<td >Title:</td><td>A Game of Thrones</td> 
</tr>
<tr>
<td >Author:</td><td>Martin, George R.R.</td>
</tr>
<tr>
<td >Published:</td><td>New York : Bantam Books</td> 
</tr>
<tr>
<td >Year:</td><td>1996</td>
</tr>

<?php
$row = 1;
if (($handle = fopen("10Titel_Semi.txt", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
    $num = count($data);
    echo "<tr>";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo "<td>" . $data[$c] . "</td>";
    }
    echo "</tr>";
}
fclose($handle);
}
?>

</table>

标题:权力的游戏
作者:马丁,乔治R.R。
出版:纽约:班塔姆图书
年份:1996年

谢谢,这可以迭代行,但我需要将每个字段分配给它的字段名(标题、作者等)。它不应该是一个带有标题行的普通表,而是一个带有字段名的列和一个带有字段本身的列。类似这样的东西:标题:权力的游戏作者:马丁,乔治R.R.出版:纽约:班塔姆图书年:1996