當(dāng)我們踏入PHP開(kāi)發(fā)的行列中的時(shí)候,我們就要時(shí)刻去要求自己,不斷學(xué)習(xí),不斷總結(jié),只有這樣,我們才能在PHP開(kāi)發(fā)的道路上越走越遠(yuǎn),今天呢,就個(gè)人開(kāi)發(fā)實(shí)例總結(jié)了一部分原生的常用公共方法,來(lái)讓新手的小伙伴在開(kāi)發(fā)的過(guò)程中可以更快的進(jìn)行開(kāi)發(fā)實(shí)踐活動(dòng):
1.使用公共方法msubstr截取中文字符串,過(guò)長(zhǎng)的使用省略號(hào)代替:
使用場(chǎng)景:
使用這類(lèi)公共方法一般都是在后臺(tái)進(jìn)行編輯器上傳一些文章的數(shù)據(jù),需要在前端進(jìn)行對(duì)應(yīng)的數(shù)據(jù)展示,而有的時(shí)候,當(dāng)后臺(tái)數(shù)據(jù)過(guò)長(zhǎng),前端所展示的空間不足以顯示所有的數(shù)據(jù),這時(shí)候多余的部分使用省略號(hào)進(jìn)行代替,這樣可以讓前端的數(shù)據(jù)展示美觀且簡(jiǎn)約,給人一種賞心悅目的感覺(jué)。
代碼展示:
/** * 截取中文字符串,過(guò)長(zhǎng)的使用省略號(hào)代替 */ function msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true){ $str = preg_replace("/<a[^>]*>/i", "", $str); $str = preg_replace("/</a>/i", "", $str); $str = preg_replace("/<div[^>]*>/i", "", $str); $str = preg_replace("/</div>/i", "", $str); $str = preg_replace("/<!--[^>]*-->/i", "", $str);//注釋內(nèi)容 $str = preg_replace("/style=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/class=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/id=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/lang=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/width=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/height=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/border=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/face=.+?['|"]/i",'',$str);//去除樣式 $str = preg_replace("/face=.+?['|"]/",'',$str);//去除樣式只允許小寫(xiě)正則匹配沒(méi)有帶 i if(function_exists("mb_substr")){ $slice= mb_substr($str, $start, $length, $charset); }elseif(function_exists('iconv_substr')) { $slice= iconv_substr($str,$start,$length,$charset); }else{ preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); } $fix=''; if(strlen($slice) < strlen($str)){ $fix='...'; } return $suffix ? $slice.$fix : $slice; }
2.enctype加密:
使用場(chǎng)景:
前端密碼匹配設(shè)置規(guī)則或者后端密碼匹配規(guī)則的再次加密,防止其他黑客進(jìn)行通用的密碼匹配機(jī)制進(jìn)行網(wǎng)站關(guān)停等工作。
代碼展示:
/** * 公共方法 * 優(yōu)化md5加密: */ function enctype($password) { return md5($password . C('MD5_SUFFIX')); }
注意事項(xiàng):
C('MD5_SUFFIX')項(xiàng)目為讀取配置的常量 "MD5_SUFFIX",常量可自行設(shè)置。
3.將手機(jī)號(hào)中間4位替換為*
使用場(chǎng)景:
網(wǎng)站上用戶通過(guò)手機(jī)號(hào)注冊(cè)賬號(hào)之后,為了保障用戶的信息安全,將手機(jī)號(hào)的中間4位替換為*,即可讓手機(jī)號(hào)顯示不全,一定程度上保障了用戶的信息安全。
代碼展示:
/** * 將手機(jī)號(hào)中間4位替換為* */ function suohao($phone){ $p = substr($phone,0,3)."****".substr($phone,7,4); return $p; }
4.驗(yàn)證手機(jī)號(hào)是否正確:
使用場(chǎng)景:
用戶注冊(cè)網(wǎng)站時(shí)校驗(yàn)用戶填寫(xiě)的手機(jī)號(hào)是否正確,方便我們后臺(tái)人員后期對(duì)數(shù)據(jù)的維護(hù)。
代碼展示:
/** * 驗(yàn)證手機(jī)號(hào)是否正確 * @author honfei * @param number $mobile */ function isMobile($mobile) { if (!is_numeric($mobile)) { return false; } return preg_match('#^13[d]{9}$|^14[5,7]{1}d{8}$|^15[^4]{1}d{8}$|^17[0,6,7,8]{1}d{8}$|^18[d]{9}$#', $mobile) ? true : false; }
5.驗(yàn)證輸入的內(nèi)容是否為純數(shù)字:
使用場(chǎng)景:
校驗(yàn)用戶提交必須為數(shù)字項(xiàng)的參數(shù)時(shí)的校驗(yàn)工作,校驗(yàn)之后可以給用戶進(jìn)行對(duì)應(yīng)的反饋信息,幫助用戶進(jìn)行數(shù)據(jù)提交的有效性。
代碼展示:
/** * 驗(yàn)證輸入的內(nèi)容是否為純數(shù)字 * @author wdy * @param number $mobile */ function isNumeric($number) { if (!is_numeric($number)) { return false; } return preg_match('/^d+$/i', $number) ? true : false; }
6.驗(yàn)證郵箱是否正確:
使用場(chǎng)景:
用戶注冊(cè)或者綁定郵箱信息的時(shí)候,需要校驗(yàn)郵箱的真實(shí)有效性,方便后期用戶找回密碼時(shí)可以快速有效的收取到對(duì)應(yīng)的校驗(yàn)碼。
代碼展示:
/** * 驗(yàn)證郵箱是否正確 * @author wdy * @param 18738536986@163.com $email */ function isEmail($email){ $mode = '/w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/'; if(preg_match($mode,$email)){ return true; }else{ return false; } }
7.遞歸重新排序無(wú)限極分類(lèi)數(shù)組:
使用場(chǎng)景:
商城分類(lèi)通常會(huì)使用此方法,可以行之有效的進(jìn)行對(duì)商城分類(lèi)的數(shù)據(jù)讀取和展示工作,方便個(gè)人的維護(hù),同時(shí)方便了用戶的體驗(yàn)。
代碼展示:
//遞歸重新排序無(wú)限極分類(lèi)數(shù)組 function recursive($array,$pid=0,$level=0){ //接收傳遞過(guò)來(lái)的數(shù)組 $arr = array(); foreach ($array as $value) { if($value['pid'] == $pid){ //定義分類(lèi)級(jí)別 $value['level'] = $level; //定義分類(lèi)分隔符號(hào) $value['html'] = str_repeat('-', $level); //$arr[]來(lái)存儲(chǔ)$value $arr[] = $value; //array_merge():函數(shù)把一個(gè)或多個(gè)數(shù)組合并為一個(gè)數(shù)組。 $arr = array_merge($arr,recursive($array,$value['id'],$level+1)); } } return $arr; }
8.獲取所有分類(lèi)子分類(lèi)的ID:
使用場(chǎng)景:
商城分類(lèi)的快速讀取,可以對(duì)分類(lèi)信息數(shù)據(jù)進(jìn)行分快速整合和數(shù)據(jù)展示,同時(shí)方便用戶的快速訪問(wèn)體驗(yàn)。
代碼展示:
//獲取所有分類(lèi)子分類(lèi)的ID function get_all_child($array, $id){ //定義一個(gè)數(shù)組 $arr = array(); //循環(huán)遍歷 foreach ($array as $v) { //判斷pid是否等于id if ($v['pid'] == $id) { //$arr接收所有的id $arr[] = $v['id']; //array_merge():函數(shù)把一個(gè)或多個(gè)數(shù)組合并為一個(gè)數(shù)組。 $arr = array_merge($arr, get_all_child($array, $v['id'])); } } return $arr; }