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

Php 检查变量是否只有一个字母或特定字符串,php,regex,Php,Regex,我有我的变量$\u GET['artist'],我想检查: 如果该变量只有一个字母,并且该字母是从a到z(区分大小写,因此a无效) 或者如果该变量是all或other 如何在PHP上使用regex和preg_match()检查它 if (preg_match('/^([a-z]|all|other)$/', $_GET['artist']) === 1) { // True } 假设all和other也应区分大小写 function check($str){ $c=strlen

我有我的变量
$\u GET['artist']
,我想检查:

  • 如果该变量只有
    一个
    字母,并且该字母是从
    a
    z
    (区分大小写,因此
    a
    无效)
  • 或者如果该变量是
    all
    other
  • 如何在PHP上使用
    regex
    preg_match()
    检查它

    if (preg_match('/^([a-z]|all|other)$/', $_GET['artist']) === 1) {
        // True
    }
    
    假设
    all
    other
    也应区分大小写

    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']);
    
    假设
    all
    other
    也应区分大小写

    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']);
    
    说到速度,你可以看出谁是最好的。虽然我个人会选择这个,但正则表达式肯定是有好处的。事实已经准备好了,我只是不能为这个毫无意义的论点而烦恼



    说到速度,你可以看出谁是最好的。虽然我个人会选择这个,但正则表达式肯定是有好处的。事实已经准备好了,我只是不能为这个毫无意义的论点而烦恼。

    但更令人费解。哈哈,但他特别要求一个正则表达式:)@Gumbo-你有评论的额外优势,正则表达式没有这样的东西。而且,我看不出美元符号、背面斜杠等等,甚至更容易理解@兹纳库斯-你认为我没有注意到吗?如果他自己写不出来,显然他不适合使用正则表达式。@Christian Sciberas:如果你知道正则表达式,那么Znarkus的解比你的解要简洁得多。(更不用说你的不正确。)@christian:到底是什么阻止你使用正则表达式的注释?但更令人费解的是。哈哈,但他特别要求使用正则表达式:)@Gumbo-你有注释的额外优势,正则表达式没有这样的功能。而且,我看不出美元符号、背面斜杠等等,甚至更容易理解@兹纳库斯-你认为我没有注意到吗?如果他自己写不出来,显然他不适合使用正则表达式。@Christian Sciberas:如果你知道正则表达式,那么Znarkus的解比你的解要简洁得多。(更不用说你的不正确。)@christian:到底是什么阻止你对正则表达式使用注释?嗯……这就是问题所在!如果我写了“Othere”,它也会起作用……我不想要这个:)如果我写了例如“hh”一样。。。我需要特定的值。。。另外,我试过没有===1是的,我现在看到的那个。。。但是如果没有===1,只需使用(preg_match('/^([a-z]| all | other)$/',$_GET['artist'])来评估“true”,就可以看到一个答案,它不会复制PHP已经拥有的功能,而是使用它。@kwichz抱歉,我不明白
    var_dump
    of
    preg_match('/^([a-z]| all | other)$/','other')
    显示它返回
    1
    ,对
    其他的
    0
    @Ben执行相同操作-谈论“无能”。嗯……这就是问题所在!如果我写了“Othere”,它也会起作用……我不想要这个:)如果我写了例如“hh”一样。。。我需要特定的值。。。另外,我试过没有===1是的,我现在看到的那个。。。但是如果没有===1,只需使用(preg_match('/^([a-z]| all | other)$/',$_GET['artist'])来评估“true”,就可以看到一个答案,它不会复制PHP已经拥有的功能,而是使用它。@kwichz抱歉,我不明白
    var|u dump
    of
    preg_match('/^([a-z]| all | other)$/','other')
    显示它返回
    1
    ,对
    其他
    返回
    0
    @Ben-谈论“无线索”。