超好用PHP函数库~不断更新,欢迎评论补充!(精)
来源:互联网 发布:主要的编程语言有哪些 编辑:程序博客网 时间:2024/06/03 19:08
平时工作需要经常需要用到一些函数,其实可以很好的封装,但发现PHP内置函数太过基础,实际用的稍不注意就容易出问题,最近我用的截取字符串函数substr但截取中文的时候容易截取不全导致乱码,所以在这里我把我平时自己写的函数都放在这里供大家取用,转载请注明出处,谢谢配合~
1. 完整截取中文字符串,混合字符串防止乱码:
function xsubstr($str,$start = 0,$length,$charset = "utf-8",$suffix = TRUE){ if(function_exists("mb_substr")){ $slice = mb_substr($str,$start,$length,$charset); }elseif(function_exists('iconv_substr')){ $slice = iconv_substr($str,$start,$length,$charset); if(FALSE===$slice){ $slice = ''; } }else{ $re['utf-8'] = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/"; $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/"; $re['gbk'] = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/"; $re['big5'] = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/"; preg_match_all($re[$charset],$str,$match); $slice = join("",array_slice($match[0],$start,$length)); } return $suffix?$slice.'...':$slice;}
2. 判断是否手机端访问函数:
function isMobile(){ $user_agent = isset($_SERVER["HTTP_USER_AGENT"])?$_SERVER["HTTP_USER_AGENT"]:''; $mobile_agents = Array( "240x320", "acer", "acoon", "acs-", "abacho", "ahong", "airness", "alcatel", "amoi", "android", "anywhereyougo.com", "applewebkit/525", "applewebkit/532", "asus", "audio", "au-mic", "avantogo", "becker", "benq", "bilbo", "bird", "blackberry", "blazer", "bleu", "cdm-", "compal", "coolpad", "danger", "dbtel", "dopod", "elaine", "eric", "etouch", "fly ", "fly_", "fly-", "go.web", "goodaccess", "gradiente", "grundig", "haier", "hedy", "hitachi", "htc", "huawei", "hutchison", "inno", "ipad", "ipaq", "ipod", "jbrowser", "kddi", "kgt", "kwc", "lenovo", "lg ", "lg2", "lg3", "lg4", "lg5", "lg7", "lg8", "lg9", "lg-", "lge-", "lge9", "longcos", "maemo", "mercator", "meridian", "micromax", "midp", "mini", "mitsu", "mmm", "mmp", "mobi", "mot-", "moto", "nec-", "netfront", "newgen", "nexian", "nf-browser", "nintendo", "nitro", "nokia", "nook", "novarra", "obigo", "palm", "panasonic", "pantech", "philips", "phone", "pg-", "playstation", "pocket", "pt-", "qc-", "qtek", "rover", "sagem", "sama", "samu", "sanyo", "samsung", "sch-", "scooter", "sec-", "sendo", "sgh-", "sharp", "siemens", "sie-", "softbank", "sony", "spice", "sprint", "spv", "symbian", "tablet", "talkabout", "tcl-", "teleca", "telit", "tianyu", "tim-", "toshiba", "tsm", "up.browser", "utec", "utstar", "verykool", "virgin", "vk-", "voda", "voxtel", "vx", "wap", "wellco", "wig browser", "wii", "windows ce", "wireless", "xda", "xde", "zte" ); $is_mobile = FALSE; foreach($mobile_agents as $device){ if(stristr($user_agent,$device)){ $is_mobile = TRUE; break; } } return $is_mobile;}
3. 判断是否UTF-8:
function is_utf8($liehuo_net){ if(preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$liehuo_net)==TRUE||preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$liehuo_net)==TRUE||preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$liehuo_net)==TRUE){ return TRUE; }else{ return FALSE; }}
4. 发送短信到手机:
function sendSMS($telphone,$message,$sign_name = "sign_name",$sendtime = ''){ $flag = 0; $sms = F('sms'); $argv = array( 'sn' => $sms['uid'], 'pwd' => strtoupper(md5($sms['uid'].$sms['passwd'])), 'mobile' => $telphone, 'content' => urlencode($message.'【'.$sms[$sign_name].'】'), 'ext' => '', 'rrid' => '', 'stime' => $sendtime ); foreach($argv as $key => $value){ if($flag!=0){ $params .= "&"; $flag = 1; } $params .= $key."="; $params .= urlencode($value); $flag = 1; } $length = strlen($params); $fp = fsockopen("sdk2.entinfo.cn",8060,$errno,$errstr,10) or exit($errstr."--->".$errno); $header = "POST /webservice.asmx/mdSmsSend_u HTTP/1.1\r\n"; $header .= "Host:sdk2.entinfo.cn\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: ".$length."\r\n"; $header .= "Connection: Close\r\n\r\n"; $header .= $params."\r\n"; fputs($fp,$header); $inheader = 1; while(!feof($fp)){ $line = fgets($fp,1024); if($inheader&&($line=="\n"||$line=="\r\n")){ $inheader = 0; } if($inheader==0){ } } preg_match('/<string xmlns=\"http:\/\/tempuri.org\/\">(.*)<\/string>/',$line,$str); $result = explode("-",$str[1]); if(count($result)>1){ //echo '发送失败返回值为:'.$line."请查看webservice返回值"; return $line; }else{ //echo '发送成功 返回值为:'.$line; return 1; }}
5. 群发短信到手机:
//多条短信 最多600条//发送到目标手机号码字符串 用","隔开 $telphone手机号码 $message短信内容function sendGroupSMS($telphone,$message,$sign_name = "sign_name",$sendtime = ''){ $flag = 0; $sms = F('sms'); //要post的数据 $argv = array( 'sn' => $sms['uid'], ////替换成您自己的序列号 'pwd' => strtoupper(md5($sms['uid'].$sms['passwd'])), //此处密码需要加密 加密方式为 md5(sn+password) 32位大写 'mobile' => $telphone, //手机号 多个用英文的逗号隔开 post理论没有长度限制.推荐群发一次小于等于10000个手机号 'content' => urlencode($message.'【'.$sms[$sign_name].'】'), //短信内容 'ext' => '', 'rrid' => '', //默认空 如果空返回系统生成的标识串 如果传值保证值唯一 成功则返回传入的值 'stime' => $sendtime //定时时间 格式为2011-6-29 11:09:21 ); //构造要post的字符串 foreach($argv as $key => $value){ if($flag!=0){ $params .= "&"; $flag = 1; } $params .= $key."="; $params .= urlencode($value); $flag = 1; } $length = strlen($params); //创建socket连接 $fp = fsockopen("sdk2.entinfo.cn",8060,$errno,$errstr,10) or exit($errstr."--->".$errno); //构造post请求的头 $header = "POST /webservice.asmx/mdSmsSend_u HTTP/1.1\r\n"; $header .= "Host:sdk2.entinfo.cn\r\n"; $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; $header .= "Content-Length: ".$length."\r\n"; $header .= "Connection: Close\r\n\r\n"; //添加post的字符串 $header .= $params."\r\n"; //发送post的数据 fputs($fp,$header); $inheader = 1; while(!feof($fp)){ $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据 if($inheader&&($line=="\n"||$line=="\r\n")){ $inheader = 0; } if($inheader==0){ // echo $line; } } preg_match('/<string xmlns=\"http:\/\/tempuri.org\/\">(.*)<\/string>/',$line,$str); $result = explode("-",$str[1]); if(count($result)>1){ //echo '发送失败返回值为:'.$line."请查看webservice返回值"; return $line; }else{ //echo '发送成功 返回值为:'.$line; return 1; }}
6. 判断目录是否可写:
//判断目录是否可写function check_dir_iswritable($dir_path){ $dir_path = str_replace('\\','/',$dir_path); $is_writale = 1; if(!is_dir($dir_path)){ $is_writale = 0; return $is_writale; }else{ $file_hd = @fopen($dir_path.'/test.txt','w'); if(!$file_hd){ @fclose($file_hd); @unlink($dir_path.'/test.txt'); $is_writale = 0; return $is_writale; } @unlink($dir_path.'/test.txt'); $dir_hd = opendir($dir_path); while(FALSE!==($file = readdir($dir_hd))){ if($file!="."&&$file!=".."){ if(is_file($dir_path.'/'.$file)){ //文件不可写,直接返回 if(!is_writable($dir_path.'/'.$file)){ return 0; } }else{ $file_hd2 = @fopen($dir_path.'/'.$file.'/test.txt','w'); if(!$file_hd2){ @fclose($file_hd2); @unlink($dir_path.'/'.$file.'/test.txt'); $is_writale = 0; return $is_writale; } @unlink($dir_path.'/test.txt'); //递归 $is_writale = check_dir_iswritable($dir_path.'/'.$file); } } } } return $is_writale;}
7. 邮箱验证:
function is_email($email){ return strlen($email)>8&&preg_match("/^([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)$/i",$email);}
8. 手机验证:
function is_phone($phone){ return strlen(trim($phone))==11&&preg_match("/^1[3|5|8][0-9]{9}$/i",trim($phone));}
9. 下载:
function download($file,$name = ''){ $fileName = $name?$name:pathinfo($file,PATHINFO_FILENAME); $filePath = realpath($file); $fp = fopen($filePath,'rb'); if(!$filePath||!$fp){ header('HTTP/1.1 404 Not Found'); echo "Error: 404 Not Found.(server file path error)<!-- Padding --><!-- Padding --><!-- Padding --> <!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --> <!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding --><!-- Padding -->"; exit; } $fileName = $fileName.'.'.pathinfo($filePath,PATHINFO_EXTENSION); $encoded_filename = urlencode($fileName); $encoded_filename = str_replace("+","%20",$encoded_filename); header('HTTP/1.1 200 OK'); header("Pragma: public"); header("Expires: 0"); header("Content-type: application/octet-stream"); header("Content-Length: ".filesize($filePath)); header("Accept-Ranges: bytes"); header("Accept-Length: ".filesize($filePath)); $ua = isset($_SERVER["HTTP_USER_AGENT"])?$_SERVER["HTTP_USER_AGENT"]:''; if(preg_match("/MSIE/",$ua)){ header('Content-Disposition: attachment; filename="'.$encoded_filename.'"'); }else{ if(preg_match("/Firefox/",$ua)){ header('Content-Disposition: attachment; filename*="utf8\'\''.$fileName.'"'); }else{ header('Content-Disposition: attachment; filename="'.$fileName.'"'); } } // ob_end_clean(); <--有些情况可能需要调用此函数 // 输出文件内容 fpassthru($fp); exit;}
10. 过滤特殊字符:
/* * 处理提交的字符串 */function strFilter($str){ $str=preg_replace("/\/|\~|\s+|\!|\?|\/|\±|\@|\#|\\$|\%|\^|\"|\&|\*|\(|\)|\_|\+|\{|\}|\:|\<|\>|\[|\]|\,|\.|\/|\;|\'|\`|\-|\=|\\\|\|/"," ",$str); $str = str_replace(PHP_EOL, ' ', $str); //替换非英语字符 $str_replace1 = array("£","¤","¥","¦","§","¨","©","ª","«","¬","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","Æ","×","Ø","æ","÷","ø",""); $str_replace2 = array("À","Á","Â","Ã","Ä","Å"); $str_replace3 = array("È","É","Ê","Ë"); $str_replace4 = array("Ì","Í","Î","Ï"); $str_replace5 = array("Ò","Ó","Ô","Õ","Ö"); $str_replace6 = array("Ù","Ú","Û","Ü"); $str_replace7 = array("à","á","â","ã","ä","å"); $str_replace8 = array("è","é","ê","ë"); $str_replace9 = array("ì","í","î","ï","¡"); $str_replace10 = array("ò","ó","ô","õ","ö","ð"); $str_replace11 = array("ù","ú","û","ü"); $str = str_replace($str_replace1,' ',$str); $str = str_replace($str_replace2,'A',$str); $str = str_replace($str_replace3,'E',$str); $str = str_replace($str_replace4,'I',$str); $str = str_replace($str_replace5,'O',$str); $str = str_replace($str_replace6,'U',$str); $str = str_replace($str_replace7,'a',$str); $str = str_replace($str_replace8,'e',$str); $str = str_replace($str_replace9,'i',$str); $str = str_replace($str_replace10,'o',$str); $str = str_replace($str_replace11,'u',$str); $str = str_replace('¢','c',$str); $str = str_replace('Ç','C',$str); $str = str_replace('Ð','D',$str); $str = str_replace('Ñ','N',$str); $str = str_replace('Ý','Y',$str); $str = str_replace('Þ','P',$str); $str = str_replace('ß','B',$str); $str = str_replace('ç','c',$str); $str = str_replace('ñ','n',$str); $str = str_replace('ý','y',$str); $str = str_replace('þ','p',$str); $str = str_replace('ÿ','y',$str); $str = str_replace(' ',' ',$str); return $str;}
11. 过滤非英语字符,返回纯英文:
//过滤非英语字符串,返回纯英语function toEnstr($inp) { preg_replace('[^A-Za-z0-9_]', '', $inp); return $inp;}
12. 替换mysql_real_escape_string和mysqli_real_escape_string
//替换mysql_real_escape_string和mysqli_real_escape_stringfunction mysql_escape_mimic($inp) { if(is_array($inp)) return array_map(__METHOD__, $inp); if(!empty($inp) && is_string($inp)) { return str_replace(array('\\', "\0", "\n", "\r", "'", '"', "\x1a"), array('\\\\', '\\0', '\\n', '\\r', "\\'", '\\"', '\\Z'), $inp); } return $inp;}
13. 下载(更简洁,封装更好)
public function exportransplan(&$condition) { set_time_limit(0); ini_set('memory_limit', '1024M'); $transportSer = D('Transportplan', 'Service'); $data_arr = $transportSer->getTransportplan($param,$limit); $output = fopen('php://output', 'w') or die("can't open php://output"); $filename = "filename" . date('Y-m-d', time()); header("Content-Type: application/csv"); header("Content-Disposition: attachment; filename=$filename.csv"); ob_end_clean(); $table_head = array( 'title1', 'title2', 'title3', 'title4', 'title5', 'title6', 'title7', 'title8' ); fputcsv($output, $table_head); foreach ($data_arr as $val) { fputcsv($output, array_values($val)); } fclose($output) or die("can't close php://output"); exit; }
待续~~~
0 0
- 超好用PHP函数库~不断更新,欢迎评论补充!(精)
- Android 开发常识(不断更新中,欢迎补充)
- MATLAB函数库(不断更新中)
- PHP服务器框架(欢迎补充)
- 有用的JS效果网址收集(持续更新中,欢迎评论并补充)
- 网络搜集各种iOS开源类库,欢迎评论补充
- sed学习笔记(不断更新补充)
- php 开源项目收集,欢迎补充~~
- CSS hack(欢迎补充)
- PHP 函数库
- PHP 函数库
- php 函数库
- 游戏开发网站收藏 (不断更新,求补充)
- JavaScript正则快速教程(待续,不断更新补充)
- linux的一些操作(不断更新,随时补充)
- php 第三方调用类。欢迎评论提意见
- 评论机器人测试--“欢迎评论”
- PHP的优劣势,欢迎指正和补充
- 单链表
- 关于ViewPager高度自适应(随着pager页的高度改变Viewpager的高度)
- 【转载】Color转ArcEngine的IRgbColor与IColor
- centos 7 查看内网ip和外网ip
- include , require ,include_once 和 require_once的区别
- 超好用PHP函数库~不断更新,欢迎评论补充!(精)
- Request header field Content-Type is not allowed by Access-Control-Allow-Headers跨域
- Java中的泛型方法
- IntelliJ Idea 常用快捷键列表
- 理解OAuth 2.0
- solr5.5(2)——部署tomcat
- 论文阅读:BMVC 2015 Deep Face Recognition
- Jmeter参数化的4种方法
- 正确使用AFNetworking的SSL保证网络安全