分享一些網路上實用的PHP表單驗證function,這些function我都已經升級到PHP7.3版本了,也經過實際測試確實有效,有需要的朋友請自行取用吧!!
//身分證驗證格式(驗證條件不成立回傳true)
function chk_pid($id) {
if(!$id)return false;
$id = strtoupper(trim($id)); //將英文字母全部轉成大寫,消除前後空白
//檢查第一個字母是否為英文字,第二個字元1 2 A~D 其餘為數字共十碼
$ereg_pattern= "^[A-Z]{1}[12ABCD]{1}[[:digit:]]{8}$";
if(!preg_match("/".$ereg_pattern."/i", $id))return true;
$wd_str="BAKJHGFEDCNMLVUTSRQPZWYX0000OI"; //關鍵在這行字串
$d1=strpos($wd_str, $id[0])%10;
$sum=0;
if($id[1]>='A')$id[1]=chr($id[1])-65; //第2碼非數字轉換依[4]說明處理
for($ii=1;$ii<9;$ii++)
$sum+= (int)$id[$ii]*(9-$ii);
$sum += $d1 + (int)$id[9];
if($sum%10 != 0)return true;
return false;
}
if(!preg_match("/^[0-9]{4}-[1-12]{2}-[1-31]{2}$/", $str)){
return false;
}
$__y = substr($str, 0, 4);
$__m = substr($str, 5, 2);
$__d = substr($str, 8, 2);
//$var=checkdate($__m, $__d, $__y);
if(checkdate($__m, $__d, $__y)){
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $str)) {
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
//E-MAIL欄位判斷(驗證條件不成立回傳true)
function judgeEmail($str){
if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$str)) {
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
if($str != strip_tags($str)){
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
//中文格式驗證(驗證條件不成立回傳true)
function judgeChinese($str){
if(!preg_match("/[\x{4e00}-\x{9fa5}]/u",$str)==true){
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
//數字欄位驗證格式-0-9(驗證條件不成立回傳true)
function judgedigital($str){
if(!preg_match("/\d/",$str)==true){
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
//身分證驗證格式(驗證條件不成立回傳true)
function chk_pid($id) {
if(!$id)return false;
$id = strtoupper(trim($id)); //將英文字母全部轉成大寫,消除前後空白
//檢查第一個字母是否為英文字,第二個字元1 2 A~D 其餘為數字共十碼
$ereg_pattern= "^[A-Z]{1}[12ABCD]{1}[[:digit:]]{8}$";
if(!preg_match("/".$ereg_pattern."/i", $id))return true;
$wd_str="BAKJHGFEDCNMLVUTSRQPZWYX0000OI"; //關鍵在這行字串
$d1=strpos($wd_str, $id[0])%10;
$sum=0;
if($id[1]>='A')$id[1]=chr($id[1])-65; //第2碼非數字轉換依[4]說明處理
for($ii=1;$ii<9;$ii++)
$sum+= (int)$id[$ii]*(9-$ii);
$sum += $d1 + (int)$id[9];
if($sum%10 != 0)return true;
return false;
}
//時間格式驗證(驗證條件不成立回傳true)
function isDate($str){if(!preg_match("/^[0-9]{4}-[1-12]{2}-[1-31]{2}$/", $str)){
return false;
}
$__y = substr($str, 0, 4);
$__m = substr($str, 5, 2);
$__d = substr($str, 8, 2);
//$var=checkdate($__m, $__d, $__y);
if(checkdate($__m, $__d, $__y)){
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
//網址驗證(驗證條件不成立回傳true)
function judgeurl($str){if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $str)) {
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
function judgeEmail($str){
if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$str)) {
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
//HTML標籤判斷(驗證條件不成立回傳true)
function judgeHtml($str){if($str != strip_tags($str)){
$resultvar=true;
}else{
$resultvar=false;
}
return $resultvar;
}
工作心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言