如何检查,如果一个PHP字符串只包含英文字母和数字?

问题描述:

在JS我用这个代码:如何检查,如果一个PHP字符串只包含英文字母和数字?

if(string.match(/[^A-Za-z0-9]+/)) 

,但我不知道,如何做到这一点在PHP。

使用preg_match()

if (!preg_match('/[^A-Za-z0-9]/', $string)) // '/[^a-z\d]/i' should also work. 
{ 
    // string contains only english letters & digits 
} 
+4

肯定。它看起来更有效率。寻找第一个非范围内的字符似乎比扫描整个字符串更明智。 – 2012-02-19 17:23:39

+0

N.B英语verison的上述链接在这里:http://php.net/manual/en/function.preg-match.php – 2014-09-23 10:22:49

+0

好吧,我已经更新了英文版的链接。 – 2014-09-24 12:21:40

例如,您可以使用preg_match()函数。

if (preg_match('/[^A-Za-z0-9]+/', $str)) 
{ 
    // ok... 
} 

if(preg_match('/[^A-Za-z0-9]+/', $str)) { 
    // ... 
} 

看一看这个快捷

if(!preg_match('/[^\W_ ] /',$string)) { 

} 

class [^\W_]比赛任何字母或数字而不是下划线。并注意!符号。它可以帮助您扫描整个用户输入。

if(ctype_alnum($string)) { 
    echo "String contains only letters and numbers."; 
} 
else { 
    echo "String doesn't contain only letters and numbers."; 
} 
+0

不确定人们为什么不投票ctype函数。我无法进行映像,因为ctype函数的范围存在性能问题。 – 2014-09-06 20:05:13

+0

ctype_alnum是locale依赖的,所以它可能无法正常工作! – thethakuri 2016-06-03 14:38:24

如果你需要检查它是否是英文的。你可以使用下面的函数。可能帮助别人..

function is_english($str) 
{ 
    if (strlen($str) != strlen(utf8_decode($str))) { 
     return false; 
    } else { 
     return true; 
    } 
} 

PHP可以字符串比较使用preg_match(regex, string)这样的正则表达式:

if (!preg_match('/[^A-Za-z0-9]+/', $string)) { 
    // $string contains only English letters and digits 
}