サーバー側にあるCSVファイルを取得し、htmlテーブルとして動的に表示したいと思います。たとえば、これ:
Name, Age, Sex
"Cantor, Georg", 163, M
これになるはずです:
<html><body><table>
<tr> <td>Name</td> <td>Age</td> <td>Sex</td> </tr>
<tr> <td>Cantor, Georg</td> <td>163</td> <td>M</td> </td>
</table></body></html>
任意の言語のソリューションを歓迎します。
以前にリンクされたソリューション は恐ろしいコードです。ほとんどすべての行にバグが含まれています。代わりに fgetcsv を使用します。
<?php
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
echo "<tr>";
foreach ($line as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
以下は、phpを使用してcsvをhtmlテーブルに変換する簡単な関数です。
_function jj_readcsv($filename, $header=false) {
$handle = fopen($filename, "r");
echo '<table>';
//display header row if true
if ($header) {
$csvcontents = fgetcsv($handle);
echo '<tr>';
foreach ($csvcontents as $headercolumn) {
echo "<th>$headercolumn</th>";
}
echo '</tr>';
}
// displaying contents
while ($csvcontents = fgetcsv($handle)) {
echo '<tr>';
foreach ($csvcontents as $column) {
echo "<td>$column</td>";
}
echo '</tr>';
}
echo '</table>';
fclose($handle);
}
_
jj_readcsv('image_links.csv',true);
のようにこの関数を呼び出すことができます
2番目のパラメーターがtrueの場合、csvの最初の行はヘッダー/タイトルとして取得されます。
これが誰かを助けることを願っています。このコードの欠陥についてコメントしてください。
phihagの答えは、各行を単一のセルに配置しますが、各値は個別のセルに配置するよう求めています。これはそれを行うようです:
<?php
// Create a table from a csv file
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
$row = $line[0]; // We need to get the actual row (it is the first element in a 1-element array)
$cells = explode(";",$row);
echo "<tr>";
foreach ($cells as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?>