PHP常用表单验证

目录

 

1. PHP 表单验证类

2. js前端表单验证

1. PHP 表单验证类

<?php
/**
* 页面作用:常用表单验证类
*/
class class_post
{
//验证是否为指定长度的字母/数字组合
function fun_text1($num1,$num2,$str)
{
     return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false;
}
 
//验证是否为指定长度数字
function fun_text2($num1,$num2,$str)
{
     return (preg_match("/^[0-9]{".$num1.",".$num2."}$/i",$str))?true:false;
}

//验证是否为指定长度汉字
function fun_font($num1,$num2,$str)
{
// preg_match("/^[\xa0-\xff]{1,4}$/", $string);
    return (preg_match("/^([\x81-\xfe][\x40-\xfe]){".$num1.",".$num2."}$/",$str))?true:false;
}

//验证身份证号码
function fun_status($str)
{
     return (preg_match('/(^([\d]{15}|[\d]{18}|[\d]{17}x)$)/',$str))?true:false;
}
 
//验证邮件地址
function fun_email($str){
     return (preg_match('/^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$/',$str))?true:false;
}

//验证电话号码
function fun_phone($str)
{
   return (preg_match("/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/",$str))?true:false;
}

//验证邮编
function fun_zip($str)
{
   return (preg_match("/^[1-9]\d{5}$/",$str))?true:false;
}

//验证url地址
function fun_url($str)
{
   return (preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/",$str))?true:false;
}
 
// 数据入库 转义 特殊字符 传入值可为字符串 或 一维数组 
function data_join(&$data)
{
   if(get_magic_quotes_gpc() == false)
   {
    if (is_array($data))
    {
     foreach ($data as $k => $v)
     {
     $data[$k] = addslashes($v);
     }
    }
    else
    {
    $data = addslashes($data);
    }
   }
   Return $data;
}
 
// 数据出库 还原 特殊字符 传入值可为字符串 或 一/二维数组
function data_revert(&$data)
{
   if (is_array($data))
   {
    foreach ($data as $k1 => $v1)
    {
     if (is_array($v1))
     {
      foreach ($v1 as $k2 => $v2)
      {
      $data[$k1][$k2] = stripslashes($v2);
      }
     }
     else
     {
     $data[$k1] = stripslashes($v1);
     }
    }
   }
   else
   {
   $data = stripslashes($data);
   }
   Return $data;
}
 
// 数据显示 还原 数据格式 主要用于内容输出 传入值可为字符串 或 一/二维数组
// 执行此方法前应先data_revert(),表单内容无须此还原
function data_show(&$data)
{
   if (is_array($data))
   {
    foreach ($data as $k1 => $v1)
    {
     if (is_array($v1))
     {
      foreach ($v1 as $k2 => $v2)
      {
      $data[$k1][$k2]=nl2br(htmlspecialchars($data[$k1][$k2]));
      $data[$k1][$k2]=str_replace(" "," ",$data[$k1][$k2]);
      $data[$k1][$k2]=str_replace("\n","<br>\n",$data[$k1][$k2]);
      }
     }
     else
     {
     $data[$k1]=nl2br(htmlspecialchars($data[$k1]));
     $data[$k1]=str_replace(" "," ",$data[$k1]);
     $data[$k1]=str_replace("\n","<br>\n",$data[$k1]);
     }
    }
   }
   else
   {
   $data=nl2br(htmlspecialchars($data));
   $data=str_replace(" "," ",$data);
   $data=str_replace("\n","<br>\n",$data);
   }
   return $data;
}
}
?>

2. js前端表单验证

//js
var regexEnum = 
{
    intege:"^-?[1-9]\\d*$",                    //整数
    intege1:"^[1-9]\\d*$",                    //正整数
    intege2:"^-[1-9]\\d*$",                    //负整数
    num:"^([+-]?)\\d*\\.?\\d+$",            //数字
    num1:"^[1-9]\\d*|0$",                    //正数(正整数 + 0)
    num2:"^-[1-9]\\d*|0$",                    //负数(负整数 + 0)
    decmal:"^([+-]?)\\d*\\.\\d+$",            //浮点数
    decmal1:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$",      //正浮点数
    decmal2:"^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",  //负浮点数
    decmal3:"^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$",  //浮点数
    decmal4:"^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",   //非负浮点数(正浮点数 + 0)
    decmal5:"^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",  //非正浮点数(负浮点数 + 0)

    email:"^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件
    color:"^[a-fA-F0-9]{6}$",                //颜色
    url:"^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$",    //url
    chinese:"^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$",                    //仅中文
    ascii:"^[\\x00-\\xFF]+$",                //仅ACSII字符
    zipcode:"^\\d{6}$",                        //邮编
    mobile:"^(1)[0-9]{10}$",                //手机
    ip4:"^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$",    //ip地址
    notempty:"^\\S+$",                        //非空
    picture:"(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$",    //图片
    rar:"(.*)\\.(rar|zip|7zip|tgz)$",                                //压缩文件
    date:"^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$",                    //日期
    qq:"^[1-9]*[1-9][0-9]*$",                //QQ号码
    tel:"^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$",    //电话号码的函数(包括验证国内区号,国际区号,分机号)
    username:"^\\w+$",                        //用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串
    letter:"^[A-Za-z]+$",                    //字母
    letter_u:"^[A-Z]+$",                    //大写字母
    letter_l:"^[a-z]+$",                    //小写字母
    idcard:"^[1-9]([0-9]{14}|[0-9]{17})$",    //身份证
    ps_username:"^[\\u4E00-\\u9FA5\\uF900-\\uFA2D_\\w]+$", //中文、字母、数字 _
    password:"^[A-Za-z0-9-_()]+$",//密码
  letter_ad:"^[A-Da-d]+$"                //选项字母
}

function isCardID(sId){ 
    var iSum=0 ;
    var info="" ;
    if(!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; 
    sId=sId.replace(/x$/i,"a"); 
    if(aCity[parseInt(sId.substr(0,2))]==null) return "你的身份证地区非法"; 
    sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
    var d=new Date(sBirthday.replace(/-/g,"/")) ;
    if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate()))return "身份证上的出生日期非法"; 
    for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11) ;
    if(iSum%11!=1) return "你输入的身份证号非法"; 
    return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") 
} 


//短时间,形如 (13:04:06)
function isTime(str)
{
    var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
    if (a == null) {return false}
    if (a[1]>24 || a[3]>60 || a[4]>60)
    {
        return false;
    }
    return true;
}

//短日期,形如 (2003-12-05)
function isDate(str)
{
    var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); 
    if(r==null)return false; 
    var d= new Date(r[1], r[3]-1, r[4]); 
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
}

//长时间,形如 (2003-12-05 13:04:06)
function isDateTime(str)
{
    var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; 
    var r = str.match(reg); 
    if(r==null) return false; 
    var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
    return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值