我有我的变量$_GET['artist']
,我想检查一下:
one
个字母,并且此字母来自a
到z
(区分大小写,那么A
无效); all
还是other
如何在PHP上使用regex
和preg_match()
进行检查?
答案 0 :(得分:6)
if (preg_match('/^([a-z]|all|other)$/', $_GET['artist']) === 1) {
// True
}
假设all
和other
也应区分大小写。
答案 1 :(得分:2)
function check($str){
$c=strlen($str)==1 ? ord($str) : 0; // get the ascii code if it is a single character
return ($c>=ord('a') && $c<=ord('z')) // it is a single character between a and z
|| strpos($str,'all')!==false // it contains "all"
|| strpos($str,'other')!==false; // it contains "other"
}
check($_GET['artist']);
看,没有正则表达式。
编辑:为了幽默我们尊敬的版主,请点击此处。
编辑2:我为这两个解决方案写了一个小配置文件,结果如下:
Test PHP RegExp
a 0.11241698265076 0.16329884529114
other 0.15441918373108 0.17051410675049
all 0.11415100097656 0.16919803619385
al 0.14953303337097 0.16402912139893
// tested over 100k iterations (less TTC is better)
在速度方面,人们可以看到谁是最好的。虽然我个人会选择这个,但肯定有正当表达有利的原因。事实已经到位,我无法对这一毫无意义的争论感到困扰。