Ankündigung

Einklappen
Keine Ankündigung bisher.

CSV-Datei aufteilen!?

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Danke. Funktioniert prima. Mußte es nur minimal anpassen:
    PHP-Code:
    $src file(dirname(__FILE__).'/../import/preisliste.csv'); //Quelle
    $dst $this->openCsvFile("kategorien.csv"); //Ziel
    $zaehler=2//weil ID 1 schon vergeben 
    $such=array('/+/','/ä/','/ö/','/ü/','/\//'); //Suchkriterien
    $replace=array('-','ae','oe','ue',''); //Replacements
    $namen = array(); //Arbeitsarray

    foreach($src as $zeile) {
       
    $werte explode(';'$zeile); // CSV Datenzeile in Array umwandeln
       
    if (!in_array($werte[6], $namen)) { // vorausgesetzt der Name steht an Position 3
          
    $namen[].= $werte[6]; // aufnehmen ins Array der bearbeiteten Namen
          
    $text=($zaehler).";1;".utf8_encode($werte[6]).";".utf8_encode($werte[4]).";;;;;".preg_replace($such$replaceutf8_encode($werte[6])).";".$werte[21]."\n";
          
    fwrite($dst$text); // komplette Zeile ins Ziel schreiben        
          
    $zaehler++;
       }
    //foreach 
    Jetzt hab ich aber noch 2 Probleme.
    Das erste, wie lasse ich die erste Zeile weg?
    Und das 2. größere Problem ist das perg_replace.
    Beim Ausführen erhalte folgende Fehlermeldung:
    Code:
    Warning:  preg_replace() [function.preg-replace]:  Compilation failed: nothing to repeat at offset 0 in ...  on line 130

    Kommentar


    • #17
      Wegen der Sache mit dem Array.
      Ich muß gestehen das ist ja ne total einfache und gute Variante.
      War wohl zu einfach für mich. Ich hab mal wieder viel zu kompliziert gedacht

      Übrigens hab beide Probleme lösen können.
      Wegen dem Weglassen der 1.Zeile prüfe ich einfach welcher Wert an erster Stelle steht:
      PHP-Code:
      if($werte[0]!="Hersteller_Artikelnummer"){
      ...

      Und zum Problem mit preg_replace() hab ich das jetzt so gemacht:
      PHP-Code:
      $such=array('#[^a-z0-9äöü/]#i','/ä/','/ö/','/ü/','/\//'); 
      $replace=array('-','ae','oe','ue','');

      preg_replace($such,$replace,str_replace(" ","-",$werte[6])) 
      Wenn jemand noch Verbesserungsvorschläge hat, nur her damit

      Kommentar

      Lädt...
      X