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