如何检查输入值是否以大写开头/或者如果它具有小写/或者如果它在PHP中都是大写的?

问题描述 投票:-1回答:4

我对PHP很陌生,没有像其他语言一样有经验。我有以下形式,我想做的是检查firstname字段是否以大写开头,如果nickname字段是小写,并且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'];
    }
?>
php html
4个回答
1
投票
  1. 要检查带大写的第一个字母,请尝试以下操作 preg_match("/^[A-Z]/", 'Bamboozler');// This will return true if first letter is upper case
  2. 要检查字符串小写的所有字符,可以使用ctype_lower()函数 ctype_lower('bamboozler');// This will return true if all the character are lower cases.
  3. 要检查字符串大写的所有字符,可以使用ctype_upper()函数 ctype_upper('BOOM');// This will return true if all the character is upper cases.

3
投票

答案非常简单。你可以使用strtoupperstrtolowersubstr的组合进行严格的比较。

$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
}

如果你混合搭配它们就可以得到任何完成的东西。

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


1
投票

一般案例检查功能。

无需使用preg_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 />';
}

结果如下:

str:[test] upper:[1] result:[]
str:[Test] upper:[1] result:[1]
str:[test] upper:[] result:[1]
str:[Test] upper:[] result:[]
str:[123] upper:[1] result:[1]
str:[123] upper:[] result:[1]
str:[!@#] upper:[1] result:[1]
str:[!@#] upper:[] result:[1]

编辑:我真的很喜欢ctype_upper($str)ctype_lower($str)选项,但你需要安装该扩展程序而我不需要。如果你有这个扩展,你可以这样做:

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

还有ucfirst()ucwords() - 如果您想在用户输入上强制使用语法标准而不需要错误报告,这两者都可以根据您的问题提供帮助。


0
投票

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

preg_match("/^[A-Z]/", $str );

你可以这样做,如果你需要将整个字符串转换为大写,

if( preg_match("/^[A-Z]/", $str ) ){
$str = strtoupper("$str");
echo $str;
}

类似地,您可以使用strtolower()将字符串转换为小写

© www.soinside.com 2019 - 2024. All rights reserved.