URL: https://www.overclockers.at/coding-stuff/php_csv_datei_importieren_ohne_explode_212333/page_1 - zur Vollversion wechseln!
hi
bin echt ziemlich eingerostet. muss ein .csv file importieren.
bisher hab ich im .csv file einfach die pipe | als feldtrenner verwendet. mit explode ging es dann in php einfach aufzutrennen.
jetzt hab ich aber eine .csv datei (die ich selbst nicht beeinflussen) kann, welche ein komma als feldtrenner hat. zusätzlich sind textfelder in " gesetzt und integer nicht.
jemand nen trick auf lager oder hilft da nur noch eine regexp?
Kann ein Textfeld auch \" enthalten?
Momentan verwende ich diese Funktion für CSVs. Greif zu.
Code: PHP/** * Parses a string as CSV * @static * * Parses single quote and double quote values the same way. * For example with delimiter ',': 1,'2',"3",'4,',"5," => array(1,'2',"3",'4,',"5,") * * @param string input string * @param string optional delimiter * * @return array fields */ static public function parseCSV($szInput,$szDelimiter) { return preg_split('/'.$szDelimiter."(?=(?:[^\"\']*[\"\'][^\"\']*[\"\'])*(?![^\"\']*[\"\']))/",$szInput); }
@watchout: wäre denkbar. dann wahrscheinlich ohne backslash davor. kann es leider nicht prüfen weil ne suche nach " zig ergebnisse pro zeile liefer
und \" kommt nicht vor
@mat: mercie bien!
Es gibt ja auch auch wirklich nichts, was es im PHP-Default-Namensraum nicht gibt:
http://php.net/manual/en/function.fgetcsv.php ?
Ich hab mir damals eine eigene Version geschnitzt, weil die von PHP damals nur auf Dateien zugreifen konnte. Mittlerweile gibt es ja str_getcsv() bei PHP 5.3 und höher. Um für ältere PHP-Versionen kompatibel zu bleiben, könnten die Funktionen (bei selbem Verhalten!) per function_exists() gepaart werden.
is ja krass des php. für jeden schmuh gibts ne function *G*
wird scho fad.......
....bei postnuke hatte es auch so angefangen das immer mehr optionale features zwangsweise eingebaut wurden........
thnx trotzdem für die hinweise
http://www.secretgeek.net/csv_trouble.asp
Traurig, aber wahr.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025