Zum Beispiel möchte ich ein Array aus den Elementen in dieser Zeichenfolge erstellen:
$str = 'red, green, blue ,orange';
Ich weiß, dass du explodieren und sie durchschleifen und trimmen kannst:
$arr = explode(',', $str);
foreach ($arr as $value) {
$new_arr[] = trim($value);
}
Aber ich habe das Gefühl, dass es einen einzeiligen Ansatz gibt, der damit umgehen kann. Irgendwelche Ideen?
php
explode
trim
higher-order-functions
SeanWM
quelle
quelle
Eine verbesserte Antwort
Ergebnis:
Dies
quelle
red
mit*red*
. Ein besserer könnte / (\ s *, \ s *) + /Im Folgenden werden auch Leerzeichen am Anfang / Ende der Eingabezeichenfolge berücksichtigt:
und dies ist ein minimaler Test mit Leerzeichen in jeder vernünftigen Position:
quelle
array_map
Kann jemand seine Leistung vergleichen, da und Regexp-Lösungen identische Ergebnisse liefern?So ersetzen und explodieren Sie in einer einzigen Codezeile
gibt die Ergebnisse als aus
quelle
Durch die Kombination einiger der Prinzipien in den vorhandenen Antworten kam ich auf
Der Grund dafür ist, dass ich in dieser Antwort einen Fehler gefunden habe. Wenn am Ende der Zeichenfolge ein Komma steht, wird ein leeres Element im Array zurückgegeben. dh
Ergebnisse in
Sie können dies beheben, indem Sie PREG_SPLIT_NO_EMPTY wie in dieser Antwort erwähnt verwenden , um es zu entfernen. Wenn Sie dies jedoch tun, müssen Sie technisch keine aufeinander folgenden Kommas über den regulären Ausdruck entfernen, daher der verkürzte Ausdruck
quelle
Sie können dies auch mit einem einzeiligen regulären Ausdruck tun
quelle
Versuche dies:
quelle
preg_replace()
generiert kein Array aus einem String. Dies ist die richtige Antwort auf die falsche Frage. Abgestimmt.$list = preg_split("/\s*,\s*/", 'red, green, blue ,orange');
geringfügige Änderung rehabilitiert die AntwortSPEZIFISCH für die Beispielzeichenfolge des OP können Sie str_word_count () verwenden , da jeder zuzuordnende Teilstring ein einzelnes Wort ist .
Code: ( Demo )
Ausgabe:
Dies kann auch für Teilzeichenfolgen angepasst werden, die über Buchstaben hinausgehen (und einige Bindestriche und Apostrophe - wenn Sie das Kleingedruckte lesen), indem die erforderlichen Zeichen zur Zeichenmaske / zum dritten Parameter hinzugefügt werden.
Code: ( Demo )
Ausgabe:
Auch hier behandle ich diese Frage aufgrund der Beispielzeichenfolge sehr eng, aber dies liefert die gleiche gewünschte Ausgabe:
Code: ( Demo )
quelle
Sie können dafür preg_split () verwenden .
quelle
quelle
\t\n\r\0\x0B
$ str = 'rot, grün, blau, orange';
$ str = trim ($ str);
$ strArray = explodieren (',', $ str);
print_r ($ strArray);
quelle