2017-08-15 3 views
1
preg_match('/^[-A-Za-z0-9\p{Han}]+$/u', $name) 

Dies funktioniert nur für chinesische Schriftzeichen, ich brauche es für alle Sprachen zu überprüfen. Irgendwelche Vorschläge?PHP preg_match für mehrere Sprachen

Ich versuchte unten Befehl. Es funktioniert für einige Sprachen, funktioniert aber nicht für alle.

preg_match('/^[-A-Za-z0-9\p{L} ]+$/u', $name) 

EDIT

Die genaue Anforderung ist: wenn die Zeichenfolge ein beliebiges Symbol enthält, ersetzen Sie ihn durch _; während mehrsprachige Inhalte erlaubt werden.

+0

Meinst du '\ p {Brief}'? – raina77ow

+0

Ich habe für Hindi, Chinesisch und Japanisch getestet. Es funktionierte für Chinesisch und Japanisch, aber nicht für Hindi – Cristal

+0

Es sieht gut aus, aber Sie haben kein diakritisches Muster enthalten. Versuchen Sie auch, '\ p {M}' hinzuzufügen. '/^[- \ p {N} \ p {L} \ p {M} \ s] + $/u'' oder - um übereinstimmende Ziffern zu vermeiden -' '/^[- \ p {L} \ p {M} \ s] + $/u''. Könnten Sie bitte * genaue * Anforderungen teilen? Was ist * Charakter * hier? Buchstaben/Ziffern/diakritische Zeichen/Leerzeichen/Bindestriche/Apostrophe? Bitte ** konkreter **, wenn Sie Regex-Fragen stellen. –

Antwort

0

Die genaue Anforderung wird sein: Wenn die Zeichenfolge ein Symbol enthält, ersetzen Sie es durch _; während mehrsprachige Inhalte erlaubt werden.

So müssen Sie preg_replace verwenden, die alle nicht-überlappende Vorkommen eines Musters mit einer definierten Ersetzungsstring ersetzt, und das Muster ein Symbol \p{S} ist übereinstimmen. Vergessen Sie nicht u UNICODE-Modifikator.

preg_replace('~\p{S}~u', '_', $s); 

Nun, wenn Sie planen, auch Interpunktion Zeichen (POSIX-Zeichenklasse [:punct:] umfasst sowohl die Satzzeichen und Symbole) mit Ausnahme von -, können Sie

preg_replace('~(?!-)[[:punct:]]~u', '_', $s); 

Siehe regex demo verwenden passen und zu entfernen.

Hier (?!-) negative Vorschau das allgemeinere [[:punct:]] Muster beschränken, die alle Satzspiele und Symbol verkohlt zwingt die Regex-Engine - von passender auszuschließen.

Sie können bei Bedarf weitere Ausnahmen hinzufügen.