2010-06-25 66 views
1

检查输入的最佳方法是什么,如果它包含来自其他语言的任何字符。 (英语除外)PHP输入过滤:只有英文字母

+1

正是什么你做意味着来自其他语言的字符?你想排除é,例如,虽然经常掉在英语单词中,但总是用英语。 – 2010-06-25 13:19:07

+3

这个问题似乎有点幼稚 – 2010-06-25 13:20:47

+2

“你想排除é例如哪些经常掉在英语中的英语一直用英语” 是的 – TheNone 2010-06-25 13:21:53

回答

3
if (preg_match("/[^\x00-\x7F]/",$string)) { 
    // $string contains at least 
} else { 
    // $string doesn't contain any foreign characters 
} 

这将检查ASCII码高于127的任何字符,因为如果它高一些,它不在英文字母表中。 7位Ascii代码包含每个英文字符。

Ascii Table http://www.cs.utk.edu/~pham/ascii_table.jpg source

0
$input = 'abcабв'; 
$out = array(); 
preg_match_all(
    "|[a-zA-Z]?|", 
    $input, 
    $out 
); 

$ out将包含所有非拉丁字符(абв)。

+0

以及特殊字符如'.','()','[]'还有更多可以在字符串中使用的外部字符串吗? – jigfox 2010-06-25 13:21:17

+0

是的,你是对的,那只适用于单个单词。 – 2010-06-25 13:23:52

2

如果这

preg_match("/[^\x00-\x7F]/",$string) 

不起作用(你没有结束符 '/' 中)那就试试这个

preg_match('/[^\x00-\x7F]/',$string)