2016-07-14 8 views
3

Ich möchte einen String jedes Mal aufteilen, wenn ein Sonderzeichen gefunden wird.Verwenden Sie preg_split für alle Sonderzeichen

Ich tat dies:

preg_split("[\\W]", $str); 

Aber das wird noch Strich zulassen

Ist es möglich, nur az AZ erlauben sagen und Ziffern und Split auf alles, was nicht ein (und vielleicht mehr?) von diesen?

Antwort

4

Sie haben gerade Ihre Frage beantwortet:

preg_split('~[^a-z0-9]~i', $str); 

Siehe this regex demo

Die [^a-z0-9]negiert Zeichenklasse entspricht andere beliebige Zeichen als a-z (und A-Z aufgrund des i Modifikator) und andere als ein Ziffer (definiert mit 0-9).

Ein anderer Weg ist mit POSIX mit [:alnum:] Zeichenklasse in einem negierte Zeichenklasse:

'~[^[:alnum:]]~' 

regex demo

Hinweis sehen, dass es einfacher ist, einzelne Zeichen regex Trennzeichen anstatt gepaart diejenigen, mein Favorit zu verwenden Sein ~. Es wird selten in Regex-Mustern verwendet, und daher muss ich nicht zu sehr in meinen Mustern entkommen.

+1

Sehr detaillierte Antwort! Ich bin ziemlich neu in Regex, also war ich mir nicht sicher, ob es möglich war – Bart

+0

Hier ist ein [Link zur Web-Ressource, die auf ** negierten Charakterklassen wohnt **] (http://www.regular-expressions.info/ charclass.html # negiert). –

Verwandte Themen