Mailinglisten-Archive |
--=====================_946649814==_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Michael, At 22:35 29.12.99 +0100, Michael Stahmann wrote: >> Wenn ich z.B. in Excel in den einzelnen Datenfeldern ";" als Satzzeichen >> verwende, werden diese Zeichen dann beim Speichern in das .csv-Format >> escaped. >> So z.B. >> asdf;"as;df";asdf;"a;sdf" >> > >Das ist mir neu, aber Prinzip hast Du Recht. Mein Kunde hat das Verbot f=FC= r >bestimmte Satzzeichen ausgesprochen bekommen. >Ich habe es gerade nicht griffbereit, aber es gibt bei uns 5 Zeichen die nicht >verwendet werden d=FCrfen. Mit Suchen und Ersetzen ist das schnell gemacht.= Man >kann sich ja ganz einfach auf andere Trennzeichen > >> Und deshalb d=FCrfte split in solchen F=E4llen sinnlos sein. > >Wenn sich jeder an die aufgestellten Regeln h=E4lt, dann klappt alles >reibungslos. Und es gibt immer Regeln! Diese Aussage gefiel mir ehrlich gesagt =FCberhaupt nicht! Daher hab ich es mir zur Aufgabe gemacht einen CSV-Parser zu schreiben. Und IMHO gibt es nun keine Zeichen die man nicht verwenden darf, wenn man es in Excel als CSV-File abspeichert... Nun gibt es nur noch eine kleine Regel, n=E4mlich, dass man die Excel-Tabell= e als "CSV" speichern muss. Hab den Wrapper mal angeh=E4ngt, wer ihn brauchen kann, kann ihn hernehmen, bitte meldet mir alle Fehler die ihr eventuell findet! Bye Dante --=====================_946649814==_ Content-Type: text/plain; charset="us-ascii" Content-Disposition: attachment; filename="csv_wrapper.inc" <? /* Author: Thomas Feyrer Date: 31.12.1999 File: csv_wrapper.inc Example 1: <? include("csv_wrapper.inc"); $wrapper = new csv_wrapper("file.csv"); $cells = $wrapper->get_all_cells(); for($i=0,$n=count($cells);$i<$n;$i++) { for($e=0,$m=count($cells[$i]);$e<$m;$e++) { echo("($i|$e) -> ".$cells[$i][$e]."\n"); } } ?> Example 2: <? include("csv_wrapper.inc"); $wrapper = new csv_wrapper(); $wrapper->open_file("file.csv"); $wrapper->parse_file(); $cells = $wrapper->get_all_cells(); for($i=0,$n=count($cells);$i<$n;$i++) { for($e=0,$m=count($cells[$i]);$e<$m;$e++) { echo("($i|$e) -> ".$cells[$i][$e]."\n"); } } ?> Example 3: <? include("csv_wrapper.inc"); $wrapper = new csv_wrapper(); $wrapper->file[] = "My;line;which;should;be;parsed"; $wrapper->parse_file(); $cells = $wrapper->get_all_cells(); for($i=0,$n=count($cells);$i<$n;$i++) { for($e=0,$m=count($cells[$i]);$e<$m;$e++) { echo("($i|$e) -> ".$cells[$i][$e]."\n"); } } ?> (c) Copyright 1999/2000 Thomas Feyrer */ class csv_wrapper { var $file; var $lines = array(); var $cells = array(array()); var $is_escaped = false; var $row = 0; var $col = 0; function csv_wrapper($file = '') { if($file) { $this->open_file($file); $this->parse_file(); } } function open_file($file) { $this->file = $file; if($this->file) { if(!($this->lines = file($this->file))) return false; } for($i=0,$n=count($this->lines);$i<$n;$i++) $this->lines[$i] = ereg_replace("[\r\n]","",$this->lines[$i]); } function parse_file() { if(!$this->file) return false; for($i=0,$n=count($this->lines);$i<$n;$i++) { $this->row = $i; $work_line = $this->lines[$i]; $this->col = 0; $this->is_escaped = false; $this->parse_line($work_line); } } function parse_line($line) { $first = substr($line,0,1); $second = substr($line,1,1); if($first == '"') { if(!$this->is_escaped) { $this->is_escaped = true; $line = substr($line,1); } elseif($second == '"') { $line = substr($line,2); $this->cells[$this->row][$this->col] .= '"'; } elseif($second == ';' || $second == '') { $this->is_escaped = false; $line = substr($line,2); $this->col++; } } elseif($first == ';') { if(!$this->is_escaped) { $line = substr($line,1); $this->col++; $this->is_escaped = false; } else { $this->cells[$this->row][$this->col] .= ";"; $line = substr($line,1); } } elseif($line) { $this->cells[$this->row][$this->col] .= substr($line,0,1); $line = substr($line,1); } else { return false; } if(!$this->parse_line($line)) return false; } function get_all_cells() { return $this->cells; } function get_cell($row,$col) { return $this->cells[$row][$col]; } } ?> --=====================_946649814==_ Content-Type: text/plain; charset="us-ascii" --=====================_946649814==_--
php::bar PHP Wiki - Listenarchive