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