Kann mir jemand erklären, wie man die Funktion preg_split () benutzt?
Ich habe den Musterparameter wie diese "/[\s,]+/"
nicht verstanden.
zum Beispiel:
Ich habe dieses Thema: is is.
und ich möchte, dass die Ergebnisse lauten:
so wird es den Raum und den Punkt ignorieren, wie kann ich das tun?
preg
bedeutet P
Regexps sind ein Albtraum für den Anfänger. Ich verstehe sie immer noch nicht und arbeite seit Jahren mit ihnen.
Das Beispiel, das Sie dort haben, ist im Wesentlichen:
%Vor%Sie haben also ein Suchmuster, das "auf jeden Teil der Zeichenfolge aufgeteilt ist, der mindestens ein Leerzeichen und / oder ein oder mehrere Kommas enthält".
Andere häufige Zeichen sind:
%Vor%Für PHP gibt es gute Informationen in der offiziellen Dokumentation .
Das sollte funktionieren:
%Vor%Die Ausgabe wäre:
%Vor% Bevor ich die Regex erkläre, nur eine Erklärung zu PREG_SPLIT_NO_EMPTY
. Das bedeutet im Grunde, dass nur die Ergebnisse von preg_split
zurückgegeben werden, wenn die Ergebnisse nicht leer sind . Dies stellt sicher, dass die im Array $words
zurückgegebenen Daten wirklich Daten in & amp; nicht nur leere Werte, die beim Umgang mit Regex Pattern & Amp; gemischte Datenquellen.
Und die Erklärung dieser Regex kann wie folgt zerlegt werden: dieses Tool :
%Vor% Eine schönere Erklärung finden Sie, wenn Sie das vollständige Regex-Muster von /(?<=\w)\b\s*[!?.]*/
in diesem anderen Tool eingeben:
(?<=\w)
Positive Lookbehind - Stellen Sie sicher, dass die unten angegebene Regex gefunden werden kann
\w
entspricht einem beliebigen Wortzeichen [a-zA-Z0-9_]
\b
setzt Position an einer Wortgrenze (^\w|\w$|\W\w|\w\W)
\s*
entspricht einem Leerzeichen. [\r\n\t\f ]
!?.
ein einzelnes Zeichen in der Liste !?.
wörtlich Diese letzte Regex-Erklärung kann von einem Menschen - auch bekannt als ich - wie folgt verkocht werden:
Match-and-split - jedes Wortzeichen, das vor einer Wortgrenze steht, die mehrere Leerzeichen und die Interpunktionszeichen von !?.
haben kann.
PHP str_word_count
könnte hier eine bessere Wahl sein.
str_word_count($string, 2)
gibt ein Array aller Wörter in der Zeichenfolge aus, einschließlich Duplikaten.
Dokumentation sagt:
Die Funktion preg_split () funktioniert genau wie split (), außer dass Reguläre Ausdrücke werden als Eingabeparameter für Muster akzeptiert.
Also, der folgende Code ...
%Vor%Dies wird folgendes Ergebnis erzeugen.
%Vor% Also, wenn dieses Thema: is is
und Sie wollen:
Array (
0 = & gt; "ist",
1 = & gt; "ist",
)
Sie müssen Ihre Regex in "/[\s]+/"
Wenn Sie nicht is ,is
haben, brauchen Sie die Regex, die Sie bereits haben "/[\s,]+/"
Tags und Links php preg-split