正则表达式拒绝非英文字符?

时间:2011-01-10 21:50:55

标签: php regex unicode

是否有一个简单的正则表达式可以捕获所有非英文字符?它需要允许常见的标点和符号,但不需要特殊字符,如俄语,日语等。

寻找适合PHP的东西。

5 个答案:

答案 0 :(得分:2)

由于您在评论中引用地址,因此它们也可能包含数字。所以:

preg_replace('/[^[:alpha:][:punct:][:digit:]]/u', utf8_encode($input), '');

应该替换不需要的字符。但是,[:alpha:]类只有在您的语言环境设置正确的情况下才有效。例如,如果它设置为de_DE,则不仅“a”到“z”被视为字符,而且“exotics”如“ä”,“ö”,“è”等。< / p>

此外,由于您不想要“俄语,日语等”,请注意u修饰符。输入必须是UTF-8编码,以免破坏它并给你错误的结果。

答案 1 :(得分:0)

比如这个[^ A-Za-z0-9 \,\。\ - ]?

答案 2 :(得分:0)

答案 3 :(得分:0)

使用hex codes,例如这将清除所有非ascii字符以及行结尾,并用空格替换它们。故意将空格(\x20)排除在范围之外,以便用一个空格替换连续的空格和/或特殊字符。

$clean = trim(preg_replace('/[^\x21-\x7E]+/', ' ', $input));

答案 4 :(得分:-1)

if (strlen($str) == strlen(utf8_decode($str))) {

}