CSV laden
Dieses Skript lädt, sortiert und filtert CSV-Dateien.
Das Skript
Stand: 21.10.2022
<?php function filtern($array, $key, $keyValue) { return @array_filter($array, function($value) use ($key, $keyValue) { return str_contains(strtolower($value[$key]), strtolower($keyValue)); }); } function csvdisplay($DateiRelativ,$Ausrichtung,$Suche='',$Suchspalte=0,$Sortierspalte=0,$Absteigend=true,$HatKopf=true,$Ueberschriften='') { $Datei = $_SERVER["DOCUMENT_ROOT"] . $DateiRelativ; if (!file_exists($Datei)) { $ausgabe = '<p><strong>Keine Datei gefunden.</strong></p>'; } else { $adr = "csv".rand(100,999); $head = $HatKopf; $u = PHP_EOL; $csv = array_map('str_getcsv', file($Datei)); if (!empty($csv)) { if (!$csv) return []; if ($HatKopf) { $header = $csv[0]; array_shift($csv); } if ($Sortierspalte>-1) { $titles = []; foreach ($csv as $row){ $titles[] = $row[$Sortierspalte]; } if ($Absteigend){ array_multisort($titles, SORT_NATURAL | SORT_FLAG_CASE, SORT_DESC, $csv); } else { array_multisort($titles, SORT_NATURAL | SORT_FLAG_CASE, $csv); } } if ($Suche>''){ $csv = filtern($csv,$Suchspalte,$Suche); } if (count($csv)>0) { if ($HatKopf) { array_unshift($csv,$header); } $ausgabe = '<style>'.$u; $ausgabe .= '#'.$adr . ' th{text-align:center;font-weight:bold;white-space:pre}'.$u; $spalte = strlen($Ausrichtung); For ($i=0; $i < $spalte; $i++) { $ausgabe .= '#'.$adr . ' td:nth-child('. ($i+1) .'){text-align:'; switch (substr($Ausrichtung,$i,1)) { case "c": $ausgabe .='center'; break; case "l": $ausgabe .='left'; break; case "r": $ausgabe .='right'; break; default: $ausgabe .='left'; } $ausgabe .= ' !important}'.$u; } $ausgabe .= '</style>'.$u; $ausgabe .= '<table ID="' . $adr . '">'. $u; If (!$head){ $Kopf = explode(",",$Ueberschriften); $ausgabe .= '<thead><tr>'; foreach($Kopf as $utext) { $ausgabe .= '<th>' . htmlspecialchars($utext) . '</th>'.$u; } $ausgabe .= '</tr></thead><tbody>'.$u; } foreach($csv as $key => $element){ if ($head) { $ausgabe .= '<thead><tr>' . $u; } else { $ausgabe .= '<tr>' . $u; } foreach($element as $subkey => $subelement){ if ($head) { $ausgabe .= '<th>' . htmlspecialchars($subelement) . '</th>' . $u; } else { $ausgabe .= '<td>' . str_replace('|','<br/>',htmlspecialchars($subelement)) . '</td>' . $u; } } if ($head) { $ausgabe .= '</tr></thead><tbody>' . $u; $head = false; } else { $ausgabe .= '</tr>' . $u; } } $ausgabe .= '</tbody></table>' . $u; } else { $ausgabe ='<p><strong>Keine Einträge.</strong></p>'.$u; } } else { $ausgabe = '<p><strong>Keine Daten.</strong></p>'.$u; } } Return $ausgabe; } ?>