一共3个文件,放置于同个文件夹,utf-8编码,复制后可直接使用。能添加的注释都写上去了。
可用于判断中文、英文、数字、混合(不限制中文、英文、数字)、日期、单选、多选、身份证号。
default.php——调用示例
test_variable.php——定义主函数
sentence_lengthtype.php——用于主函数中重复引用的字段长度限制类型部分代码
技术所限,难免错误;如有错误,请通知一下我。
20201113更新:zh、en、num、mix四种类型增加默认值判断
以下为default.php
(数据均符合规则,输出结果为NULL;如需返回错误信息,可修改规则让数据“错误”;test_variable.php中有错误规则示例)
<?php require 'test_variable.php'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
<title>自定义字段检测函数</title>
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport"/>
<meta content="yes" name="apple-mobile-web-app-capable"/>
<meta content="black" name="apple-mobile-web-app-status-bar-style"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="email=no" name="format-detection"/>
<meta content="initial-scale=1.0,user-scalable=no,maximum-scale=1" media="(device-height: 568px)" name="viewport"/>
<style>
</style>
</head>
<body>
<?php
$temp_str = array
(
//array([中文名称],[变量值],[必填/可选填],[变量值类型],[变量值长度限制类型],[变量值长度],[默认值:是否匹配单选/多选选项值])
array("姓名","张三",1,"zh",-1,5)
,array("英文名","hello",1,"en",-1,5)
,array("班级","201804",1,"num",-1,6)
,array("地址","航银路25号",1,"mix",-1,6)
,array("日期","2020/10/30 11:30",1,"date","","Y/m/d H:i")
,array("性别","男,女",1,"radio","","","男")
,array("学习科目","语文,数学,英语",1,"checkbox","","","语文")
,array("身份证号","45020320000406079X",0,"idnum")
);
echo "<div>--------</div>";
echo "<pre>";
var_dump($temp_str);
echo "</pre>";
echo "<div>--------</div>";
echo "<pre>";
var_dump(test_variable($temp_str));
echo "</pre>";
echo "<div>--------</div>";
?>
</body>
</html>
以下为test_variable.php
<?php
/*
标准格式
[0]str_cn:中文名称
[1]str_value:值
[2]str_required:1-必填,0-可选填
[3]str_type:类型。zh-中文,en-英文,num-数字,mix-混合(不限制中文、英文、数字),date-日期,radio-单选,checkbox-多选,idnum-身份证号
[4]str_lengthtype:字段长度限制类型。0-等于,1-大于等于,2-大于,-1小于等于,-2小于
str_lengthtype缺少“无限制”的判断,嫌麻烦;如果有需要,可以设置为小于100位之类的
[5]str_length:字段长度。填入数字,如5,配合str_lengthtype。
[6]str_match:默认值时,是否能匹配选项
$temp_str = array
(
//array([中文名称],[变量值],[必填/可选填],[变量值类型],[变量值长度限制类型],[变量值长度],[默认值:是否匹配单选/多选选项值])
array("姓名","张三",1,"zh",-1,5)
,array("英文名","hello",1,"en",-1,5)
,array("班级","201804",1,"num",-1,6)
,array("地址","航银路25号",1,"mix",-1,6)
,array("日期","2020/10/30 11:30",1,"date","","Y/m/d H:i")
,array("性别","男,女",1,"radio","","","女")
,array("学习科目","语文,数学,英语",1,"checkbox","","","语文")
,array("身份证号","45020320000406079X",0,"idnum")
);
*/
/*
感谢CSDN:渡目成书,下雨的声音丶,tottyandbaty
*/
/*
20201112更新:zh、en、num、mix四种类型增加默认值判断
20201113更新:构造array时,逗号前置,方便操作
*/
function test_variable($str_multiple) {
//以;分割,判断是否多组参数需要检测
for($i_multiple=0;$i_multiple<count($str_multiple);$i_multiple++){
//赋值单组参数
$str_single=$str_multiple[$i_multiple];
//判断输入参数格式格式是否正确
//[0]为空
if (preg_match("/^[\\s]*$/",$str_single[0])) {
$return_value="页面第".($i_multiple+1)."参数中str_single[0]不能为空";
}
/*
//[1]为空
elseif (preg_match("/^[\\s]*$/",$str_single[1])) {
$return_value="第".($i_multiple+1)."参数中str_single[1]不能为空";
}
*/
//[2]为空
elseif (preg_match("/^[