检查变量是否只有一个字母或特定字符串

时间:2011-05-01 17:37:43

标签: php regex

我有我的变量$_GET['artist'],我想检查一下:

  1. 如果该变量只有one个字母,并且此字母来自az(区分大小写,那么A无效);
  2. 或该变量是all还是other
  3. 如何在PHP上使用regexpreg_match()进行检查?

2 个答案:

答案 0 :(得分:6)

if (preg_match('/^([a-z]|all|other)$/', $_GET['artist']) === 1) {
    // True
}

假设allother也应区分大小写。

答案 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)

在速度方面,人们可以看到谁是最好的。虽然我个人会选择这个,但肯定有正当表达有利的原因。事实已经到位,我无法对这一毫无意义的争论感到困扰。