CSV laden

Erstellt: 17.10.2022 Lesedauer ≤ 1 Min.

Dieses Skript lädt, sortiert und filtert CSV-Dateien.

Das Skript

Stand: 21.10.2022

Ladefehler: $$$ file a $$$

<?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($titlesSORT_NATURAL |  SORT_FLAG_CASESORT_DESC$csv);
            } else {
              
array_multisort($titlesSORT_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;
}
?>