Gast JDK Geschrieben 26. Januar 2004 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
kLeiner_HobBes Geschrieben 26. Januar 2004 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
computercrustie Geschrieben 27. Januar 2004 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]
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden