我只想让用户使用字母,数字和一些外国字母。这有效,但它删除了外国字母(如öçşğ)。
preg_replace('/[^a-zA-Z0-9\s]/', '', $nick)
所以我在下面使用了一些外国字母,但它仍然删除了外国字母。
preg_replace("@[^A-Za-z0-9\- şıüğçİŞĞÜÇ]+@i","",$nick);
允许他们的正确方法是什么?
答案 0 :(得分:2)
当您想使用特定于语言的字符时,您可以使用以下构造,这比在正则表达式中编写您的语言的所有特定字符更容易理解:
preg_replace("/[^\w\p{Latin}]+/", '', 'Öm$ür Y_ağız');
将“拉丁语”替换为http://php.net/manual/en/regexp.reference.unicode.php
中您自己的unicode字符集答案 1 :(得分:1)
关闭。只需要u
(PCRE_UTF8)修饰符,你就错过了字母“ö”;)
preg_replace("@[^A-Za-z0-9\-\sşıüöğçİŞĞÜÖÇ]+@iu", '', 'Öm$ür Y_ağız');
返回Ömür Yağız
未经测试,但您可以将正则表达式简化为:
@[^a-z0-9şıüöğçİ -]@iu