У меня есть эта простая функция для вывода таблицы из файла CSV. Проблема в том, что он создает дополнительную теаду.
function MSC_Show_Tables($attr) {
$rows = 1;
if (($handle = fopen($attr['csvfile'], "r")) !== FALSE) {
$priceTable = '<table class="msc-prices-tables">';
while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
$numRows = count($row);
if($rows == 1) {
$priceTable .= '<thead class="msc-table-head"><tr><th>'.$row[0].'</th><th>'.$row[1].'</th><th>'.$row[2].'</th></tr><thead><tbody>';
} else {
$priceTable .= '<tr><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td></tr>';
}
$rows++;
}
return $priceTable.'</tbody></table>';
fclose($handle);
}
}
Это HTML, который он производит
<table class="msc-prices-tables">
<thead class="msc-table-head">...</thead>
<thead></thead>
<tbody>...</tbody>
</table>
Эта строка имеет 2 <thead>
и нет </thead>
так что ваш браузер, вероятно, исправляет эту ошибку и добавляет дополнительную
$priceTable .= '<thead class="msc-table-head"><tr><th>'.$row[0]
.'</th><th>'.$row[1].'</th><th>'.$row[2]
.'</th></tr><thead><tbody>';
//----------------------^^^^^^^
Так что поменяйте на
$priceTable .= '<thead class="msc-table-head"><tr><th>'.$row[0]
.'</th><th>'.$row[1].'</th><th>'.$row[2]
.'</th></tr></thead><tbody>';
// ---------------------^^^^^^^
Ваше закрытие <thead>
отсутствует ведущая косая черта. Так должно быть </thead>