只允许字母、数字和一些外文字母?

Allow only letters, numbers and some foreign letters?

我只想允许用户使用字母、数字和一些外国字母。这有效,但它会删除外来字母(如 öçşğ)。

preg_replace('/[^a-zA-Z0-9\s]/', '', $nick)

所以我在下面使用了允许一些外文字母,但它仍然删除了外文字母。

preg_replace("@[^A-Za-z0-9\- şıüğçİŞĞÜÇ]+@i","",$nick);

允许它们的正确方法是什么?

关闭。只需要 u (PCRE_UTF8) 修饰符,你错过了字母“ö”;)

preg_replace("@[^A-Za-z0-9\-\sşıüöğçİŞĞÜÖÇ]+@iu", '', 'Öm$ür Y_ağız');

returns Ömür Yağız

未经测试,但您可以将正则表达式简化为:

@[^a-z0-9şıüöğçİ -]@iu

当你想使用特定语言的字符时,你可以使用以下结构,这比用正则表达式写出你的语言的所有特定字符更容易理解:

preg_replace("/[^\w\p{Latin}]+/", '', 'Öm$ür Y_ağız');

并将“Latin”替换为您自己的 unicode 字符集 http://php.net/manual/en/regexp.reference.unicode.php