Gast JDK Geschrieben 26. Januar 2004 Teilen Geschrieben 26. Januar 2004 Hallo, hab einen csv String... bla,bla,"bla,bla,bla",bla,bla,"bla,bla",bla ..jetzt möchte ich mit explode($meinString,",") den String nach Kommas trennen, aber nur nach Kommas die nicht zwischen " " stehen. Wie mach ich das am elegantesten? Vielen Dank Jens Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 26. Januar 2004 Teilen Geschrieben 26. Januar 2004 Well, mir fällt grad nix blöderes ein, als den String mal nach \" zu exploden und dann, jenachdem, ob am anfang des strings ein " vorkam alle ungeraden, andernfalls alle geraden Arrayelemente nochmal nach Komma zu trennen und das ganze zum Ergebnis-Array hinzufügen: //$meinString enthält das zu splittende Array //nach " trennen $tmp_1 = explode($meinString , "\""); //wenn der erste Teil kein "bla,bla" war, dann nimm alle geraden Elemente //ansonsten fange erst beim nächsten an und kopiere das erste "bla,bla" samt //Anführungszeichen ins Ergebnis-Array if (strpos($meinString,"\"") > strpos($meinString,",") ) $i = 0; else { array_push($erg, "\"".$tmp_1[0]."\""); $i = 1; } if (; $i < count($tmp_1); $i+=2) { //"Normale" Teile ohne " nach Komma trennen und ins Ergebnis pushen $tmp_2 = explode($tmp_1[$i] , ","); foreach ($tmp_2 as $tmp_3) array_push($erg,$tmp_3); //Wenn danach noch ein "-Teil kommen könnte, diesen mit " ins Ergebnis if ($i+1 < count($tmp_1) array_push($erg, "\"".$tmp[$i+1]."\""); } [/PHP] Sorry, Code ist unübersichtlich, aber ich hab net soviel Zeit gehabt HTH mfg kLeiner_HobBes Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
computercrustie Geschrieben 27. Januar 2004 Teilen Geschrieben 27. Januar 2004 Noch eleganter geht's so: <?php $text='bla,bla,"bla,bla,bla",bla,bla,"bla,bla",bla'; $pattern="/\"([^\"]*)\"|([^,]*)/"; preg_match_all( $pattern, $text, $array ); $array = array_filter( array_merge( $array[1], $array[2] ) ); print_r($array); ?> [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.