2012-03-28 11 views
1

Wie entferne ich Leerzeichen in preg_split Ergebnis ohne mit preg_replace, um zuerst alle Leerzeichen aus $test string zu entfernen?PHP preg_split loswerden von Leerzeichen in nur einer Zeile?

$test = 'One , Two, Thee '; 
$test = preg_replace('/\s+/', ' ', $test); 
$pieces = preg_split("/[,]/", $test); 
+0

Sie könnten 'verwenden trim' statt. Zählt es? – zerkms

+0

@zerkms kann Ihren Kommentar nicht verstehen. 'trim' gibt die Zeichenfolge mit Leerzeichen zurück, die vom Anfang und Ende abgezogen wurden, nicht innerhalb der Zeichenfolge. – Polmonino

+0

und Sie sagten nichts über "innerhalb der Zeichenfolge", Sie sagten "Wie kann ich die folgenden Leerzeichen loswerden" – zerkms

Antwort

4

Wenn es preg_split() sein muss (Sie tatsächlich erforderlich, dass in der Frage), dann könnte dies helfen:

$test = 'One , Two, Thee '; 
$pieces = preg_split("/\s*,\s*/", trim($test), -1, PREG_SPLIT_NO_EMPTY); 

trim() verwendet wird Raum vor dem ersten und hinter dem letzten Elemente zu entfernen. (Was preg_split() nicht tun - es entfernt nur Plätze rund um das Komma)

+0

+1 für 'PREG_SPLIT_NO_EMPTY'. Ich werde den Parameter -1 weiter untersuchen, danke. – Polmonino

+2

@Polmonino dritten Parameter ist das Limit, -1 bedeutet eigentlich "alle Elemente erhalten, keine Grenze". Dies ist der Standardwert, Sie müssen ihn jedoch explizit angeben, wenn Sie den vierten Parameter verwenden möchten. – Kaii

1

Ich würde es tun, wie folgt:

$test = 'One , Two, Thee '; 
$pieces = array_map('trim', explode(',', $test)); 
print_r($pieces); 
+0

Wird explodieren behandeln den Fall von sep wie ',' (mit einer beliebigen Anzahl von Leerzeichen vor oder nach)? Ich glaube nicht .. – Polmonino

+1

@Polmonino nein wird es nicht, deshalb verwendet Frosty 'array_map ('trim', ..)'. trim() entfernt den Leerraum vor und nach dem Text in jedem Element. – Kaii

Verwandte Themen