Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查输入值是否以大写字母开头/或是否以小写字母开头/或是否为';PHP中都是大写吗?_Php_Html - Fatal编程技术网

如何检查输入值是否以大写字母开头/或是否以小写字母开头/或是否为';PHP中都是大写吗?

如何检查输入值是否以大写字母开头/或是否以小写字母开头/或是否为';PHP中都是大写吗?,php,html,Php,Html,我对PHP非常陌生,对is没有其他语言那么多的经验。我有下面的表单,我想做的是检查firstname字段是否以大写开头,昵称字段是否为小写,lastname字段是否全部为大写。我见过人们将字符串和文本转换成不同的情况,但我不知道如何进行我希望实现的验证 我已经将文本转换为小写/大写/大小写,但这只是W3CSchools中非常简单的半行代码 此外,这不是任何其他问题的重复。其他人关注纯PHP函数,如创建字符串和回显结果,另一个问题甚至不适用于我试图实现的内容,因此我对此进行了编辑 以下是HTML:

我对PHP非常陌生,对is没有其他语言那么多的经验。我有下面的表单,我想做的是检查firstname字段是否以大写开头,昵称字段是否为小写,lastname字段是否全部为大写。我见过人们将字符串和文本转换成不同的情况,但我不知道如何进行我希望实现的验证

我已经将文本转换为小写/大写/大小写,但这只是W3CSchools中非常简单的半行代码

此外,这不是任何其他问题的重复。其他人关注纯PHP函数,如创建字符串和回显结果,另一个问题甚至不适用于我试图实现的内容,因此我对此进行了编辑

以下是HTML:

<!DOCTYPE html>
<html>
    <head>
        <title>Testing case sensitive validations</title>
    </head>
    <body>
        <form name="newform" method="post" action="walkin.php">
        Firstname <input type="text" name="fname"><br><br>
        Nickname <input type="text" name="nname"><br><br>
        Lastname <input type="text" name="lname"><br><br>
        <input type="submit" name="submit" value="Submit">
        </form>
    </body>
</html> 

测试区分大小写的验证
名字

昵称

姓氏

以下是我目前掌握的PHP:

<?php
if (isset($_POST['submit'])) {
        $fname = $_POST['fname'];
        $nname = $_POST['nname'];
        $lname = $_POST['lname'];
    }
?>

答案出人意料地简单。您可以使用和的组合,并进行严格的比较

$firstLetterUppercase = 'A_word';

if(substr($firstLetterUppercase, 0, 1) === strtoupper(substr($firstLetterUppercase, 0, 1))) {
    // first letter is upper case
}

$nickNameLowerCase = 'nickname';

if($nickNameLowerCase === strtolower($nickNameLowerCase)) {
    // it's lower case
}

$lastName = 'ALL UPPER CASE';

if($lastName === strtoupper($lastName)) {
    // it's upper case
}
如果你把它们混合搭配起来,你几乎可以完成任何事情


请注意,这里的松散比较和严格比较没有区别,但使用严格比较总是很好的。

如果第一个字符是大写,则返回true。而$str是要检查的字符串

preg_match("/^[A-Z]/", $str );
如果需要将整个字符串转换为大写,可以这样做

if( preg_match("/^[A-Z]/", $str ) ){
$str = strtoupper("$str");
echo $str;
}
类似地,您可以使用
strtolower()

  • 要检查大写字母的首字母,请尝试以下操作

    preg_match("/^[A-Z]/", 'Bamboozler');// This will return true if first letter is upper case
    
  • 要检查字符串的所有小写字符,可以使用
    ctype\u lower()
    函数

    ctype_lower('bamboozler');// This will return true if all the character are lower cases.
    
    ctype_upper('BOOM');// This will return true if all the character is upper cases.
    
  • 要检查字符串大写的所有字符,可以使用
    ctype\u upper()
    函数

    ctype_lower('bamboozler');// This will return true if all the character are lower cases.
    
    ctype_upper('BOOM');// This will return true if all the character is upper cases.
    

  • 一个通用的案例检查功能

    无需使用
    preg\u match()
    substr()
    。您可以使用
    {0}
    的字符串索引方法直接访问第一个字符。如果需要第二个字符,请使用
    {1}

    function checkFirstLetter($str,$upper=true) {
      if ($upper) {
        return ($str{0} == strtoupper($str{0}));
      } else {
        return ($str{0} == strtolower($str{0}));
      }
    }
    
    $test[] = array("str" => "test", "case" => true);
    $test[] = array("str" => "Test", "case" => true);
    $test[] = array("str" => "test", "case" => false);
    $test[] = array("str" => "Test", "case" => false);
    $test[] = array("str" => "123", "case" => true);
    $test[] = array("str" => "123", "case" => false);
    $test[] = array("str" => "!@#", "case" => true);
    $test[] = array("str" => "!@#", "case" => false);
    
    foreach($test as $k => $v) {
      echo 'str:['.$v['str'].'] 
        upper:['.$v['case'].'] 
        result:['.checkFirstLetter($v['str'],$v['case']).']<br />';
    }
    
    编辑: 我非常喜欢
    ctype\u upper($str)
    ctype\u lower($str)
    选项,但您需要安装该扩展,我不需要。如果您有此扩展,您可以执行以下操作:

    if (ctype_upper($str{0})) {
      // is upper first
    }
    

    如果您想在用户输入时强制使用语法标准,而不需要错误报告,那么还有和-这两个选项可能会有所帮助。

    我也有点困惑,为什么StackOverflow删除了突出显示代码的功能,并按ctrl+K在每行添加四个空格,为什么他们放弃了这条捷径?他们没有吗?它仍然是这样运作的,你会用另一种你更精通的语言怎么做?另外,请分享你所说的你尝试过的。首先:避免去学习PHP的学校。它充满了变化无常和不良习惯。上面写着PHP5教程。。哪个版本?5.4与5.6大不相同。。另外,学习7。第二:缩进将帮助您更快地阅读代码。第三:用所有新语言研究regexAs,开始的地方是,当你搜索一些东西来帮助解决这个问题时,你会学到其他20件事情请注意,OP不是问如何转换为all lower或all upper,而是问如何检测字符串是all lower还是all upper。