Ich möchte einen String für alles explode
:
- Leerzeichen (\n \t usw.)
- Komma
- Bindestrich (kleiner Strich). So wie dieser >> -
Aber das funktioniert nicht:
$keywords = explode("\n\t\r\a,-", "mein String");
Wie mache ich das?
Ich möchte einen String für alles explode
:
Aber das funktioniert nicht:
$keywords = explode("\n\t\r\a,-", "mein String");
Wie mache ich das?
Explode kann das nicht. Es gibt eine schöne Funktion namens preg_split
dafür. Mach es so:
$keywords = preg_split("/[\s,-]+/", "Dieses-Zeichen, ist der Grund warum wir keine schönen Dinge haben können");
var_dump($keywords);
Dies gibt aus:
array
0 => string 'Dieses' (length=6)
1 => string 'Zeichen' (length=7)
2 => string 'ist' (length=3)
3 => string 'der' (length=3)
4 => string 'Grund' (length=5)
5 => string 'warum' (length=5)
6 => string 'wir' (length=3)
7 => string 'keine' (length=5)
8 => string 'schönen' (length=7)
9 => string 'Dinge' (length=5)
Übrigens, benutze nicht split
, es ist veraltet.
... oder wenn Sie keine Regex mögen und Dinge trotzdem explodieren möchten, könnten Sie mehrere Zeichen durch nur ein Zeichen ersetzen bevor Sie explodieren:
$keywords = explode("-", str_replace(array("\n", "\t", "\r", "\a", ",", "-"), "-",
"mein String\nEr enthält Text.\rUnd mehrere\ntypen von Zeilenumbrüchen.\tUnd Tabs."));
var_dump($keywords);
Dies führt zu:
array(6) {
[0]=>
string(9) "mein String"
[1]=>
string(17) "Er enthält Text."
[2]=>
string(11) "Und mehrere"
[3]=>
string(12) "typen von Neu"
[4]=>
string(6) "zeilen."
[5]=>
string(9) "Und Tabs."
}
Diese Technik führt 6 Durchläufe über den Eingabestring aus (volle Traversierung des Strings x6), bevor sie am Bindestrich explodiert. Ich würde den viel einfacheren, einzelnen Funktionsaufruf in shamittomars Antwort verwenden, da er nur einen Durchlauf über den Eingabestring macht.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.