[PHP] .csv Datei importieren (ohne explode)

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_csv_datei_importieren_ohne_explode_212333/page_1 - zur Vollversion wechseln!


Bogus schrieb am 02.12.2009 um 12:48

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?


watchout schrieb am 02.12.2009 um 12:54

Kann ein Textfeld auch \" enthalten?


mat schrieb am 02.12.2009 um 12:59

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);
	}

Edit: Bug im PHP-vbTag gefixt. :p


Bogus schrieb am 02.12.2009 um 13:38

@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!


COLOSSUS schrieb am 02.12.2009 um 13:41

Es gibt ja auch auch wirklich nichts, was es im PHP-Default-Namensraum nicht gibt:
http://php.net/manual/en/function.fgetcsv.php ?


mat schrieb am 02.12.2009 um 14:25

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.


Bogus schrieb am 02.12.2009 um 14:46

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


Ringding schrieb am 02.12.2009 um 19:10

http://www.secretgeek.net/csv_trouble.asp

Traurig, aber wahr.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025