作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用它开发过大型软件项目,也一定多少了解它的语法。
在PHP的流行普及中,网上总结出了很多实用的PHP代码片段,这些代码片段在当你遇到类似的问题时,粘贴过去就可以使用,非常的高效,非常的省时省力。将这些程序员前辈总结出的优秀代码放到自己的知识库中,是一个善于学习的程序员的好习惯。
PHP代码样例
<?php /** * 时间:2015-8-6 * 作者:River * 超级有用、必须收藏的PHP代码样例 */ class Helper { /** * 友好显示var_dump */ static public function dump($var, $echo = true, $label = null, $strict = true) { $label = ( $label === null ) ? \'\' : rtrim($label) . \' \'; if (!$strict) { if (ini_get(\'html_errors\')) { $output = print_r($var, true); $output = \"<pre>\" . $label . htmlspecialchars($output, ENT_QUOTES) . \"</pre>\"; } else { $output = $label . print_r($var, true); } } else { ob_start(); var_dump($var); $output = ob_get_clean(); if (!extension_loaded(\'xdebug\')) { $output = preg_replace(\"/\\]\\=\\>\\n(\\s+)/m\", \"] => \", $output); $output = \'<pre>\' . $label . htmlspecialchars($output, ENT_QUOTES) . \'</pre>\'; } } if ($echo) { echo $output; return null; } else return $output; } /** * 获取客户端IP地址 */ static public function getClientIP() { static $ip = NULL; if ($ip !== NULL) return $ip; if (isset($_SERVER[\'HTTP_X_FORWARDED_FOR\'])) { $arr = explode(\',\', $_SERVER[\'HTTP_X_FORWARDED_FOR\']); $pos = array_search(\'unknown\', $arr); if (false !== $pos) unset($arr[$pos]); $ip = trim($arr[0]); } elseif (isset($_SERVER[\'HTTP_CLIENT_IP\'])) { $ip = $_SERVER[\'HTTP_CLIENT_IP\']; } elseif (isset($_SERVER[\'REMOTE_ADDR\'])) { $ip = $_SERVER[\'REMOTE_ADDR\']; } // IP地址合法验证 $ip = ( false !== ip2long($ip) ) ? $ip : \'0.0.0.0\'; return $ip; } /** * 循环创建目录 */ static public function mkdir($dir, $mode = 0777) { if (is_dir($dir) || @mkdir($dir, $mode)) return true; if (!mk_dir(dirname($dir), $mode)) return false; return @mkdir($dir, $mode); } /** * 格式化单位 */ static public function byteFormat($size, $dec = 2) { $a = array(\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"); $pos = 0; while ($size >= 1024) { $size /= 1024; $pos++; } return round($size, $dec) . \" \" . $a[$pos]; } /** * 下拉框,单选按钮 自动选择 * * @param $string 输入字符 * @param $param 条件 * @param $type 类型 * selected checked * @return string */ static public function selected($string, $param = 1, $type = \'select\') { if (is_array($param)) { $true = in_array($string, $param); } elseif ($string == $param) { $true = true; } if ($true) $return = $type == \'select\' ? \'selected=\"selected\"\' : \'checked=\"checked\"\'; echo $return; } /** * 获得来源类型 post get * * @return unknown */ static public function method() { return strtoupper(isset($_SERVER[\'REQUEST_METHOD\']) ? $_SERVER[\'REQUEST_METHOD\'] : \'GET\' ); } /** * 提示信息 */ static public function message($action = \'success\', $content = \'\', $redirect = \'javascript:history.back(-1);\', $timeout = 4) { switch ($action) { case \'success\': $titler = \'操作完成\'; $class = \'message_success\'; $images = \'message_success.png\'; break; case \'error\': $titler = \'操作未完成\'; $class = \'message_error\'; $images = \'message_error.png\'; break; case \'errorBack\': $titler = \'操作未完成\'; $class = \'message_error\'; $images = \'message_error.png\'; break; case \'redirect\': header(\"Location:$redirect\"); break; case \'script\': if (empty($redirect)) { exit(\'<script language=\"javascript\">alert(\"\' . $content . \'\");window.history.back(-1)</script>\'); } else { exit(\'<script language=\"javascript\">alert(\"\' . $content . \'\");window.location=\" \' . $redirect . \' \"</script>\'); } break; } // 信息头部 $header = \'<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\"> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/> <title>操作提示</title> <style type=\"text/css\"> body{font:12px/1.7 \"\\5b8b\\4f53\",Tahoma;} html,body,div,p,a,h3{margin:0;padding:0;} .tips_wrap{ background:#F7FBFE;border:1px solid #DEEDF6;width:780px;padding:50px;margin:50px auto 0;} .tips_inner{zoom:1;} .tips_inner:after{visibility:hidden;display:block;font-size:0;content:\" \";clear:both;height:0;} .tips_inner .tips_img{width:80px;float:left;} .tips_info{float:left;line-height:35px;width:650px} .tips_info h3{font-weight:bold;color:#1A90C1;font-size:16px;} .tips_info p{font-size:14px;color:#999;} .tips_info p.message_error{font-weight:bold;color:#F00;font-size:16px; line-height:22px} .tips_info p.message_success{font-weight:bold;color:#1a90c1;font-size:16px; line-height:22px} .tips_info p.return{font-size:12px} .tips_info .time{color:#f00; font-size:14px; font-weight:bold} .tips_info p a{color:#1A90C1;text-decoration:none;} </style> </head> <body>\'; // 信息底部 $footer = \'</body></html>\'; $body = \'<script type=\"text/javascript\"> function delayURL(url) { var delay = document.getElementById(\"time\").innerHTML; //alert(delay); if(delay > 0){ delay--; document.getElementById(\"time\").innerHTML = delay; } else { window.location.href = url; } setTimeout(\"delayURL(\\\'\" + url + \"\\\')\", 1000); } </script><div class=\"tips_wrap\"> <div class=\"tips_inner\"> <div class=\"tips_img\"> <img src=\"\' . Yii::app()->baseUrl . \'/static/images/\' . $images . \'\"/> </div> <div class=\"tips_info\"> <p class=\"\' . $class . \'\">\' . $content . \'</p> <p class=\"return\">系统自动跳转在 <span class=\"time\" id=\"time\">\' . $timeout . \' </span> 秒后,如果不想等待,<a href=\"\' . $redirect . \'\">点击这里跳转</a></p> </div> </div> </div><script type=\"text/javascript\"> delayURL(\"\' . $redirect . \'\"); </script>\'; exit($header . $body . $footer); } /** * 查询字符生成 */ static public function buildCondition(array $getArray, array $keys = array()) { if ($getArray) { foreach ($getArray as $key => $value) { if (in_array($key, $keys) && $value) { $arr[$key] = CHtml::encode(strip_tags($value)); } } return $arr; } } /** * base64_encode */ static function b64encode($string) { $data = base64_encode($string); $data = str_replace(array(\'+\', \'/\', \'=\'), array(\'-\', \'_\', \'\'), $data); return $data; } /** * base64_decode */ static function b64decode($string) { $data = str_replace(array(\'-\', \'_\'), array(\'+\', \'/\'), $string); $mod4 = strlen($data) % 4; if ($mod4) { $data .= substr(\'====\', $mod4); } return base64_decode($data); } /** * 验证邮箱 */ public static function email($str) { if (empty($str)) return true; $chars = \"/^([a-z0-9+_]|\\\\-|\\\\.)+@(([a-z0-9_]|\\\\-)+\\\\.)+[a-z]{2,6}\\$/i\"; if (strpos($str, \'@\') !== false && strpos($str, \'.\') !== false) { if (preg_match($chars, $str)) { return true; } else { return false; } } else { return false; } } /** * 验证手机号码 */ public static function mobile($str) { if (empty($str)) { return true; } return preg_match(\'#^13[\\d]{9}$|14^[0-9]\\d{8}|^15[0-9]\\d{8}$|^18[0-9]\\d{8}$#\', $str); } /** * 验证固定电话 */ public static function tel($str) { if (empty($str)) { return true; } return preg_match(\'/^((\\(\\d{2,3}\\))|(\\d{3}\\-))?(\\(0\\d{2,3}\\)|0\\d{2,3}-)?[1-9]\\d{6,7}(\\-\\d{1,4})?$/\', trim($str)); } /** * 验证qq号码 */ public static function qq($str) { if (empty($str)) { return true; } return preg_match(\'/^[1-9]\\d{4,12}$/\', trim($str)); } /** * 验证邮政编码 */ public static function zipCode($str) { if (empty($str)) { return true; } return preg_match(\'/^[1-9]\\d{5}$/\', trim($str)); } /** * 验证ip */ public static function ip($str) { if (empty($str)) return true; if (!preg_match(\'#^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$#\', $str)) { return false; } $ip_array = explode(\'.\', $str); //真实的ip地址每个数字不能大于255(0-255) return ( $ip_array[0] <= 255 && $ip_array[1] <= 255 && $ip_array[2] <= 255 && $ip_array[3] <= 255 ) ? true : false; } /** * 验证身份证(中国) */ public static function idCard($str) { $str = trim($str); if (empty($str)) return true; if (preg_match(\"/^([0-9]{15}|[0-9]{17}[0-9a-z])$/i\", $str)) return true; else return false; } /** * 验证网址 */ public static function url($str) { if (empty($str)) return true; return preg_match(\'#(http|https|ftp|ftps)://([\\w-]+\\.)+[\\w-]+(/[\\w-./?%&=]*)?#i\', $str) ? true : false; } /** * 根据ip获取地理位置 * @param $ip * return :ip,beginip,endip,country,area */ public static function getlocation($ip = \'\') { $ip = new XIp(); $ipArr = $ip->getlocation($ip); return $ipArr; } /** * 中文转换为拼音 */ public static function pinyin($str) { $ip = new XPinyin(); return $ip->output($str); } /** * 拆分sql * * @param $sql */ public static function splitsql($sql) { $sql = preg_replace(\"/TYPE=(InnoDB|MyISAM|MEMORY)( DEFAULT CHARSET=[^; ]+)?/\", \"ENGINE=\\\\1 DEFAULT CHARSET=\" . Yii::app()->db->charset, $sql); $sql = str_replace(\"\\r\", \"\\n\", $sql); $ret = array(); $num = 0; $queriesarray = explode(\";\\n\", trim($sql)); unset($sql); foreach ($queriesarray as $query) { $ret[$num] = \'\'; $queries = explode(\"\\n\", trim($query)); $queries = array_filter($queries); foreach ($queries as $query) { $str1 = substr($query, 0, 1); if ($str1 != \'#\' && $str1 != \'-\') $ret[$num] .= $query; } $num++; } return ($ret); } /** * 字符截取 * * @param $string * @param $length * @param $dot */ public static function cutstr($string, $length, $dot = \'...\', $charset = \'utf-8\') { if (strlen($string) <= $length) return $string; $pre = chr(1); $end = chr(1); $string = str_replace(array(\'&\', \'"\', \'<\', \'>\'), array($pre . \'&\' . $end, $pre . \'\"\' . $end, $pre . \'<\' . $end, $pre . \'>\' . $end), $string); $strcut = \'\'; if (strtolower($charset) == \'utf-8\') { $n = $tn = $noc = 0; while ($n < strlen($string)) { $t = ord($string[$n]); if ($t == 9 || $t == 10 || ( 32 <= $t && $t <= 126 )) { $tn = 1; $n++; $noc++; } elseif (194 <= $t && $t <= 223) { $tn = 2; $n += 2; $noc += 2; } elseif (224 <= $t && $t <= 239) { $tn = 3; $n += 3; $noc += 2; } elseif (240 <= $t && $t <= 247) { $tn = 4; $n += 4; $noc += 2; } elseif (248 <= $t && $t <= 251) { $tn = 5; $n += 5; $noc += 2; } elseif ($t == 252 || $t == 253) { $tn = 6; $n += 6; $noc += 2; } else { $n++; } if ($noc >= $length) { break; } } if ($noc > $length) { $n -= $tn; } $strcut = substr($string, 0, $n); } else { for ($i = 0; $i < $length; $i++) { $strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++$i] : $string[$i]; } } $strcut = str_replace(array($pre . \'&\' . $end, $pre . \'\"\' . $end, $pre . \'<\' . $end, $pre . \'>\' . $end), array(\'&\', \'"\', \'<\', \'>\'), $strcut); $pos = strrpos($strcut, chr(1)); if ($pos !== false) { $strcut = substr($strcut, 0, $pos); } return $strcut . $dot; } /** * 描述格式化 * @param $subject */ public static function clearCutstr($subject, $length = 0, $dot = \'...\', $charset = \'utf-8\') { if ($length) { return XUtils::cutstr(strip_tags(str_replace(array(\"\\r\\n\"), \'\', $subject)), $length, $dot, $charset); } else { return strip_tags(str_replace(array(\"\\r\\n\"), \'\', $subject)); } } /** * 检测是否为英文或英文数字的组合 * * @return unknown */ public static function isEnglist($param) { if (!eregi(\"^[A-Z0-9]{1,26}$\", $param)) { return false; } else { return true; } } /** * 将自动判断网址是否加http:// * * @param $http * @return string */ public static function convertHttp($url) { if ($url == \'http://\' || $url == \'\') return \'\'; if (substr($url, 0, 7) != \'http://\' && substr($url, 0, 8) != \'https://\') $str = \'http://\' . $url; else $str = $url; return $str; } /* 标题样式格式化 */ public static function titleStyle($style) { $text = \'\'; if ($style[\'bold\'] == \'Y\') { $text .=\'font-weight:bold;\'; $serialize[\'bold\'] = \'Y\'; } if ($style[\'underline\'] == \'Y\') { $text .=\'text-decoration:underline;\'; $serialize[\'underline\'] = \'Y\'; } if (!empty($style[\'color\'])) { $text .=\'color:#\' . $style[\'color\'] . \';\'; $serialize[\'color\'] = $style[\'color\']; } return array(\'text\' => $text, \'serialize\' => empty($serialize) ? \'\' : serialize($serialize)); } // 自动转换字符集 支持数组转换 static public function autoCharset($string, $from = \'gbk\', $to = \'utf-8\') { $from = strtoupper($from) == \'UTF8\' ? \'utf-8\' : $from; $to = strtoupper($to) == \'UTF8\' ? \'utf-8\' : $to; if (strtoupper($from) === strtoupper($to) || empty($string) || (is_scalar($string) && !is_string($string))) { //如果编码相同或者非字符串标量则不转换 return $string; } if (is_string($string)) { if (function_exists(\'mb_convert_encoding\')) { return mb_convert_encoding($string, $to, $from); } elseif (function_exists(\'iconv\')) { return iconv($from, $to, $string); } else { return $string; } } elseif (is_array($string)) { foreach ($string as $key => $val) { $_key = self::autoCharset($key, $from, $to); $string[$_key] = self::autoCharset($val, $from, $to); if ($key != $_key) unset($string[$key]); } return $string; } else { return $string; } } /* 标题样式恢复 */ public static function titleStyleRestore($serialize, $scope = \'bold\') { $unserialize = unserialize($serialize); if ($unserialize[\'bold\'] == \'Y\' && $scope == \'bold\') return \'Y\'; if ($unserialize[\'underline\'] == \'Y\' && $scope == \'underline\') return \'Y\'; if ($unserialize[\'color\'] && $scope == \'color\') return $unserialize[\'color\']; } /** * 列出文件夹列表 * * @param $dirname * @return unknown */ public static function getDir($dirname) { $files = array(); if (is_dir($dirname)) { $fileHander = opendir($dirname); while (( $file = readdir($fileHander) ) !== false) { $filepath = $dirname . \'/\' . $file; if (strcmp($file, \'.\') == 0 || strcmp($file, \'..\') == 0 || is_file($filepath)) { continue; } $files[] = self::autoCharset($file, \'GBK\', \'UTF8\'); } closedir($fileHander); } else { $files = false; } return $files; } /** * 列出文件列表 * * @param $dirname * @return unknown */ public static function getFile($dirname) { $files = array(); if (is_dir($dirname)) { $fileHander = opendir($dirname); while (( $file = readdir($fileHander) ) !== false) { $filepath = $dirname . \'/\' . $file; if (strcmp($file, \'.\') == 0 || strcmp($file, \'..\') == 0 || is_dir($filepath)) { continue; } $files[] = self::autoCharset($file, \'GBK\', \'UTF8\'); ; } closedir($fileHander); } else { $files = false; } return $files; } /** * [格式化图片列表数据] * * @return [type] [description] */ public static function imageListSerialize($data) { foreach ((array) $data[\'file\'] as $key => $row) { if ($row) { $var[$key][\'fileId\'] = $data[\'fileId\'][$key]; $var[$key][\'file\'] = $row; } } return array(\'data\' => $var, \'dataSerialize\' => empty($var) ? \'\' : serialize($var)); } /** * 反引用一个引用字符串 * @param $string * @return string */ static function stripslashes($string) { if (is_array($string)) { foreach ($string as $key => $val) { $string[$key] = self::stripslashes($val); } } else { $string = stripslashes($string); } return $string; } /** * 引用字符串 * @param $string * @param $force * @return string */ static function addslashes($string, $force = 1) { if (is_array($string)) { foreach ($string as $key => $val) { $string[$key] = self::addslashes($val, $force); } } else { $string = addslashes($string); } return $string; } /** * 格式化内容 */ static function formatHtml($content, $options = \'\') { $purifier = new CHtmlPurifier(); if ($options != false) $purifier->options = $options; return $purifier->purify($content); } } ?>