非常好用方便的表單數據驗證類
<?php //驗證類 class Fun{ function isEmpty($val) { if (!is_string($val)) return false; //是否是字符串類型 if (empty($val)) return false; //是否已設定 if ($val=='') return false; //是否為空 return true; } /* ----------------------------------------------------------- 函數名稱:isNumber 簡要描述:檢查輸入的是否為數字 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isNumber($val) { if(ereg("^[0-9]+$", $val)) return true; return false; } /* ----------------------------------------------------------- 函數名稱:isPhone 簡要描述:檢查輸入的是否為電話 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isPhone($val) { //eg: xxx-xxxxxxxx-xxx | xxxx-xxxxxxx-xxx ... if(ereg("^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$",$val)) return true; return false; } /* ----------------------------------------------------------- 函數名稱:isPostcode 簡要描述:檢查輸入的是否為郵編 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isPostcode($val) { if(ereg("^[0-9]{4,6}$",$val)) return true; return false; } /* ----------------------------------------------------------- 函數名稱:isEmail 簡要描述:郵箱地址合法性檢查 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isEmail($val,$domain="") { if(!$domain) { if( preg_match("/^[a-z0-9-_.]+@[\da-z][\.\w-]+\.[a-z]{2,4}$/i", $val) ) { return true; } else return false; } else { if( preg_match("/^[a-z0-9-_.]+@".$domain."$/i", $val) ) { return true; } else return false; } }//end func /* ----------------------------------------------------------- 函數名稱:isName 簡要描述:姓名昵稱合法性檢查,只能輸入中文英文 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isName($val) { if( preg_match("/^[\x80-\xffa-zA-Z0-9]{3,60}$/", $val) )//2008-7-24 { return true; } return false; }//end func /* ----------------------------------------------------------- 函數名稱:isStrLength($theelement, $min, $max) 簡要描述:檢查字符串長度是否符合要求 輸入:mixed (字符串,最小長度,最大長度) 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isStrLength($val, $min, $max) { $theelement= trim($val); if(ereg("^[a-zA-Z0-9]{".$min.",".$max."}$",$val)) return true; return false; } /* ----------------------------------------------------------- 函數名稱:isNumberLength($theelement, $min, $max) 簡要描述:檢查字符串長度是否符合要求 輸入:mixed (字符串,最小長度,最大長度) 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isNumLength($val, $min, $max) { $theelement= trim($val); if(ereg("^[0-9]{".$min.",".$max."}$",$val)) return true; return false; } /* ----------------------------------------------------------- 函數名稱:isNumberLength($theelement, $min, $max) 簡要描述:檢查字符串長度是否符合要求 輸入:mixed (字符串,最小長度,最大長度) 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isEngLength($val, $min, $max) { $theelement= trim($val); if(ereg("^[a-zA-Z]{".$min.",".$max."}$",$val)) return true; return false; } /* ----------------------------------------------------------- 函數名稱:isEnglish 簡要描述:檢查輸入是否為英文 輸入:string 輸出:boolean 作者:------ 修改日志:------ ----------------------------------------------------------- */ function isEnglish($theelement) { if( ereg("[\x80-\xff].",$theelement) ) { Return false; } Return true; } /* ----------------------------------------------------------- 函數名稱:isChinese 簡要描述:檢查是否輸入為漢字 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ /* function isChinese($sInBuf)//有問題的函數 { $iLen= strlen($sInBuf); for($i= 0; $i< $iLen; $i++) { if(ord($sInBuf{$i})>=0x80) { if( (ord($sInBuf{$i})>=0x81 && ord($sInBuf{$i})<=0xFE) && ((ord($sInBuf{$i+1})>=0x40 && ord($sInBuf{$i+1}) < 0x7E) || (ord($sInBuf{$i+1}) > 0x7E && ord($sInBuf{$i+1})<=0xFE)) ) { if(ord($sInBuf{$i})>0xA0 && ord($sInBuf{$i})<0xAA) { //有中文標點 return false; } } else { //有日文或其它文字 return false; } $i++; } else { return false; } } return true; }*/ function isChinese($sInBuf)//正確的函數 { if (preg_match("/^[\x7f-\xff]+$/", $sInBuf)) { //兼容gb2312,utf-8 return true; } else { return false; } } /* ----------------------------------------------------------- 函數名稱:isDomain($Domain) 簡要描述:檢查一個(英文)域名是否合法 輸入:string 域名 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isDomain($Domain) { if(!eregi("^[0-9a-z]+[0-9a-z\.-]+[0-9a-z]+$", $Domain)) { Return false; } if( !eregi("\.", $Domain)) { Return false; } if(eregi("\-\.", $Domain) or eregi("\-\-", $Domain) or eregi("\.\.", $Domain) or eregi("\.\-", $Domain)) { Return false; } $aDomain= explode(".",$Domain); if( !eregi("[a-zA-Z]",$aDomain[count($aDomain)-1]) ) { Return false; } if(strlen($aDomain[0]) > 63 || strlen($aDomain[0]) < 1) { Return false; } Return true; } /** * 驗證是否日期的函數 * @param unknown_type $date * @param unknown_type $format * @throws Exception * @return boolean */ function validateDate( $date, $format='YYYY-MM-DD') { switch( $format ) { case 'YYYY/MM/DD': case 'YYYY-MM-DD': list( $y, $m, $d ) = preg_split( '/[-./ ]/', $date ); break; case 'YYYY/DD/MM': case 'YYYY-DD-MM': list( $y, $d, $m ) = preg_split( '/[-./ ]/', $date ); break; case 'DD-MM-YYYY': case 'DD/MM/YYYY': list( $d, $m, $y ) = preg_split( '/[-./ ]/', $date ); break; case 'MM-DD-YYYY': case 'MM/DD/YYYY': list( $m, $d, $y ) = preg_split( '/[-./ ]/', $date ); break; case 'YYYYMMDD': $y = substr( $date, 0, 4 ); $m = substr( $date, 4, 2 ); $d = substr( $date, 6, 2 ); break; case 'YYYYDDMM': $y = substr( $date, 0, 4 ); $d = substr( $date, 4, 2 ); $m = substr( $date, 6, 2 ); break; default: throw new Exception( "Invalid Date Format" ); } return checkdate( $m, $d, $y ); } /* ----------------------------------------------------------- 函數名稱:isDate 簡要描述:檢查日期是否符合0000-00-00 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isDate($sDate) { if( ereg("^[0-9]{4}\-[][0-9]{2}\-[0-9]{2}$",$sDate) ) { Return true; } else { Return false; } } /* ----------------------------------------------------------- 函數名稱:isTime 簡要描述:檢查日期是否符合0000-00-00 00:00:00 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isTime($sTime) { if( ereg("^[0-9]{4}\-[][0-9]{2}\-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$",$sTime) ) { Return true; } else { Return false; } } /* ----------------------------------------------------------- 函數名稱:isMoney($val) 簡要描述:檢查輸入值是否為合法人民幣格式 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isMoney($val) { if(ereg("^[0-9]{1,}$", $val)) return true; if( ereg("^[0-9]{1,}\.[0-9]{1,2}$", $val) ) return true; return false; } /* ----------------------------------------------------------- 函數名稱:isIp($val) 簡要描述:檢查輸入IP是否符合要求 輸入:string 輸出:boolean 修改日志:------ ----------------------------------------------------------- */ function isIp($val) { return(bool) ip2long($val); } //----------------------------------------------------------------------------- /** * 驗證手機號 * @param int $mobile */ function valid_mobile($mobile){ if(strlen($mobile)!=11) return false; if(preg_match('/13[0-9]\d{8}|15[0|1|2|3|5|6|7|8|9]\d{8}|18[0|5|6|7|8|9]\d{8}/',$mobile)){ return true; }else{ return false; } } /** * 縮略圖生成函數,最好使用GD2 * * @param string $srcFile 要生成縮略圖的文件 * @param int $toW 縮略圖寬度 * @param int $toH 縮略圖高度 * @param string $toFile 縮略圖文件 */ function ImageResize($srcFile,$toW,$toH,$toFile=""){ if($toFile==""){ $toFile = $srcFile; } $info = ""; $data = GetImageSize($srcFile,$info); switch ($data[2]){ case 1: if(!function_exists("imagecreatefromgif")){ //echo "你的GD庫不能使用GIF格式的圖片,請使用Jpeg或PNG格式!<a href='javascript:go(-1);'>返回</a>"; return false; } $im = ImageCreateFromGIF($srcFile); break; case 2: if(!function_exists("imagecreatefromjpeg")){ //echo "你的GD庫不能使用jpeg格式的圖片,請使用其它格式的圖片!<a href='javascript:go(-1);'>返回</a>"; return false; } $im = ImageCreateFromJpeg($srcFile); break; case 3: $im = ImageCreateFromPNG($srcFile); break; } $srcW=ImageSX($im); $srcH=ImageSY($im); $toWH=$toW/$toH; $srcWH=$srcW/$srcH; if($toWH<=$srcWH){ $ftoW=$toW; $ftoH=$ftoW*($srcH/$srcW); } else{ $ftoH=$toH; $ftoW=$ftoH*($srcW/$srcH); } if($srcW>$toW||$srcH>$toH) { if(function_exists("imagecreatetruecolor")){ @$ni = ImageCreateTrueColor($ftoW,$ftoH); if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); else{ $ni=ImageCreate($ftoW,$ftoH); ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); } }else{ $ni=ImageCreate($ftoW,$ftoH); ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH); } if(function_exists('imagejpeg')) ImageJpeg($ni,$toFile); else ImagePNG($ni,$toFile); ImageDestroy($ni); }else{ ImageDestroy($im); return false; } ImageDestroy($im); return true; } //去除字符串空格 static function strTrim($str) { return preg_replace("/\s/","",$str); } //驗證用戶名 static function userName($str,$type,$len) { $str=self::strTrim($str); if($len<strlen($str)) { return false; }else{ switch($type) { case "EN"://純英文 if(preg_match("/^[a-zA-Z]+$/",$str)) { return true; }else{ return false; } break; case "ENNUM"://英文數字 if(preg_match("/^[a-zA-Z0-9]+$/",$str)) { return true; }else{ return false; } break; case "ALL": //允許的符號(|-_字母數字) if(preg_match("/^[\|\-\_a-zA-Z0-9]+$/",$str)) { return true; }else{ return false; } break; } } } //驗證密碼長度 static function passWord($min,$max,$str) { $str=self::strTrim($str); if(strlen($str)>=$min && strlen($str)<=$max) { return true; }else{ return false; } } //驗證Email static function Email($str) { $str=self::strTrim($str); if(preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.){1,2}[a-z]{2,4}$/i",$str)) { return true; }else{ return false; } } //驗證身份證(中國) static function idCard($str) { $str=self::strTrim($str); if(preg_match("/^([0-9]{15}|[0-9]{17}[0-9a-z])$/i",$str)) { return true; }else{ return false; } } //驗證座機電話 static function Phone($type,$str) { $str=self::strTrim($str); switch($type) { case "CHN": if(preg_match("/^([0-9]{3}|0[0-9]{3})-[0-9]{7,8}$/",$str)) { return true; }else{ return false; } break; case "INT": if(preg_match("/^[0-9]{4}-([0-9]{3}|0[0-9]{3})-[0-9]{7,8}$/",$str)) { return true; }else{ return false; } break; } } /** * 過濾二維數組的值 * @param 二維數組 $arr_data * @param 一維數組 $field * @return Ambigous <multitype:, string, unknown> */ function getarrayfield($arr_data, $field) { $resultArr = array(); foreach ( $arr_data as $key => $value ) { foreach ($field as $k=>$v) { if(array_key_exists($v, $value))//存在才添加 { $resultArr[$key][$v] =$value[$v] ; } else { $resultArr[$key][$v]="不存在這個列"; } } } return $resultArr; } /** * 獲取客戶端IP地址 * @return ip */ function get_client_ip(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip); } function get_http_user_agent(){ return isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ""; } /** * 從IP地址獲取真實地址 * @param IP $ip */ function get_address_from_ip($ip){ $url='http://www.youdao.com/smartresult-xml/search.s?type=ip&q='; $xml=file_get_contents($url.$ip); $data=simplexml_load_string($xml); return $data->product->location; } /** * 產生隨機字串,可用來自動生成密碼 默認長度6位 字母和數字混合 * @param string $len 長度 * @param string $type 字串類型 * 0 字母 1 數字 2 大寫字母 3 小寫字母 默認混合 4中文 * @param string $addChars 額外字符 * @return string */ function rand_string($len=6,$type='',$addChars='') { $str =''; switch($type) { case 0: $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.$addChars; break; case 1: $chars= str_repeat('0123456789',3); break; case 2: $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ'.$addChars; break; case 3: $chars='abcdefghijklmnopqrstuvwxyz'.$addChars; break; case 4: $chars = "們以我到他會作時要動國產的一是工就年階義發成部民可出能方進在了不和有大這主中人上為來分生對於學下級地個用同行面說種過命度革而多子後自社加小機也經力線本電高量長黨得實家定深法表著水理化爭現所二起政三好十戰無農使性前等反體合斗路圖把結第裡正新開論之物從當兩些還天資事隊批點育重其思與間內去因件日利相由壓員氣業代全組數果期導平各基或月毛然如應形想制心樣干都向變關問比展那它最及外沒看治提五解系林者米群頭意只明四道馬認次文通但條較克又公孔領軍流入接席位情運器並飛原油放立題質指建區驗活眾很教決特此常石強極土少已根共直團統式轉別造切九你取西持總料連任志觀調七麼山程百報更見必真保熱委手改管處己將修支識病象幾先老光專什六型具示復安帶每東增則完風回南廣勞輪科北打積車計給節做務被整聯步類集號列溫裝即毫知軸研單色堅據速防史拉世設達爾場織歷花受求傳口斷況采精金界品判參層止邊清至萬確究書術狀廠須離再目海交權且兒青才證低越際八試規斯近注辦布門鐵需走議縣兵固除般引齒千勝細影濟白格效置推空配刀葉率述今選養德話查差半敵始片施響收華覺備名紅續均藥標記難存測士身緊液派准斤角降維板許破述技消底床田勢端感往神便賀村構照容非搞亞磨族火段算適講按值美態黃易彪服早班麥削信排台聲該擊素張密害侯草何樹肥繼右屬市嚴徑螺檢左頁抗蘇顯苦英快稱壞移約巴材省黑武培著河帝僅針怎植京助升王眼她抓含苗副雜普談圍食射源例致酸舊卻充足短劃劑宣環落首尺波承粉踐府魚隨考刻靠夠滿夫失包住促枝局菌桿周護巖師舉曲春元超負砂封換太模貧減陽揚江析畝木言球朝醫校古呢稻宋聽唯輸滑站另衛字鼓剛寫劉微略范供阿塊某功套友限項余倒卷創律雨讓骨遠幫初皮播優占死毒圈偉季訓控激找叫雲互跟裂糧粒母練塞鋼頂策雙留誤礎吸阻故寸盾晚絲女散焊功株親院冷徹彈錯散商視藝滅版烈零室輕血倍缺厘泵察絕富城沖噴壤簡否柱李望盤磁雄似困鞏益洲脫投送奴側潤蓋揮距觸星松送獲興獨官混紀依未突架寬冬章濕偏紋吃執閥礦寨責熟穩奪硬價努翻奇甲預職評讀背協損棉侵灰雖矛厚羅泥辟告卵箱掌氧恩愛停曾溶營終綱孟錢待盡俄縮沙退陳討奮械載胞幼哪剝迫旋征槽倒握擔仍呀鮮吧卡粗介鑽逐弱腳怕鹽末陰豐霧冠丙街萊貝輻腸付吉滲瑞驚頓擠秒懸姆爛森糖聖凹陶詞遲蠶億矩康遵牧遭幅園腔訂香肉弟屋敏恢忘編印蜂急拿擴傷飛露核緣游振操央伍域甚迅輝異序免紙夜鄉久隸缸夾念蘭映溝乙嗎儒殺汽磷艱晶插埃燃歡鐵補咱芽永瓦傾陣碳演威附牙芽永瓦斜灌歐獻順豬洋腐請透司危括脈宜笑若尾束壯暴企菜穗楚漢愈綠拖牛份染既秋遍鍛玉夏療尖殖井費州訪吹榮銅沿替滾客召旱悟刺腦措貫藏敢令隙爐殼硫煤迎鑄粘探臨薄旬善福縱擇禮願伏殘雷延煙句純漸耕跑澤慢栽魯赤繁境潮橫掉錐希池敗船假亮謂托伙哲懷割擺貢呈勁財儀沉煉麻罪祖息車穿貨銷齊鼠抽畫飼龍庫守築房歌寒喜哥洗蝕廢納腹乎錄鏡婦惡脂莊擦險贊鐘搖典柄辯竹谷賣亂虛橋奧伯趕垂途額壁網截野遺靜謀弄掛課鎮妄盛耐援扎慮鍵歸符慶聚繞摩忙舞遇索顧膠羊湖釘仁音跡碎伸燈避泛亡答勇頻皇柳哈揭甘諾概憲濃島襲誰洪謝炮澆斑訊懂靈蛋閉孩釋乳巨徒私銀伊景坦累勻霉杜樂勒隔彎績招紹胡呼痛峰零柴簧午跳居尚丁秦稍追梁折耗鹼殊崗挖氏刃劇堆赫荷胸衡勤膜篇登駐案刊秧緩凸役剪川雪鏈漁啦臉戶洛孢勃盟買楊宗焦賽旗濾硅炭股坐蒸凝竟陷槍黎救冒暗洞犯筒您宋弧爆謬塗味津臂障褐陸啊健尊豆拔莫抵桑坡縫警挑污冰柬嘴啥飯塑寄趙喊墊丹渡耳刨虎筆稀昆浪薩茶滴淺擁穴覆倫娘噸浸袖珠雌媽紫戲塔錘震歲貌潔剖牢鋒疑霸閃埔猛訴刷狠忽災鬧喬唐漏聞沈熔氯荒莖男凡搶像漿旁玻亦忠唱蒙予紛捕鎖尤乘烏智淡允叛畜俘摸銹掃畢璃寶芯爺鑒秘淨蔣鈣肩騰枯拋軌堂拌爸循誘祝勵肯酒繩窮塘燥泡袋朗喂鋁軟渠顆慣貿糞綜牆趨彼屆墨礙啟逆卸航衣孫齡嶺騙休借".$addChars; break; case 5: $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.$addChars; break; default : // 默認去掉了容易混淆的字符oOLl和數字01,要添加請使用addChars參數 $chars='ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'.$addChars; break; } if($len>10 ) {//位數過長重復字符串一定次數 $chars= $type==1? str_repeat($chars,$len) : str_repeat($chars,5); } if($type == 4){ // 處理中文 $chars = preg_replace('/[^\\x{4e00}-\\x{9fa5}]/u', '', $chars); // //干掉非utf8中文字符 $chars = chunk_split($chars,3,","); // //每隔3個字符插入一個“,”,轉換為數組使用,使用strlen()測出php中一個中文霸占了3個 $re = explode(",",$chars); shuffle($re);//隨機重新排序數組 $chars = implode($re); unset($re); $str = mb_substr($chars,0,$len,"utf-8"); }else{ $chars = str_shuffle($chars); $str = substr($chars,0,$len); } return $str; } //獲取url中參數的值 function geturlval($url,$name) { $arr = parse_url($url); $arr_query = $this->convertUrlQuery($arr['query']); return $arr_query[$name]; } function convertUrlQuery($query) { $queryParts = explode('&', $query); $params = array(); foreach ($queryParts as $param) { $item = explode('=', $param); $params[$item[0]] = $item[1]; } return $params; } /** * 抓取遠程圖片 * * @param string $url 遠程圖片路徑 * @param string $filename 本地存儲文件名 */ function grabImage($url, $savepath) { if($url =="") { return false; //如果 $url 為空則返回 false; } $ext_name = strrchr($url, '.'); //獲取圖片的擴展名 if($ext_name != '.gif' && $ext_name != '.jpg' && $ext_name != '.bmp' && $ext_name != '.png') { return false; //格式不在允許的范圍 } //獲取原圖片名 $filename = $savepath.'\\'.end(explode('/',$url)); //開始捕獲 ob_start(); readfile($url); $img_data = ob_get_contents(); ob_end_clean(); $size = strlen($img_data); $local_file = fopen($filename , 'a'); echo $filename; if(fwrite($local_file, $img_data)== FALSE){ echo '圖片下載失敗'; } fclose($local_file); return $filename; } } ?>