程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 常用函數收藏(一)

php 常用函數收藏(一)

編輯:關於PHP編程

/**
  * 返回經addslashes處理過的字符串或數組
  * @param $string 需要處理的字符串或數組
  * @return mixed
  */
 function new_addslashes($string){
     if(!is_array($string)) return addslashes($string);
     foreach($string as $key => $val) $string[$key] = new_addslashes($val);
     return $string;
 }
 
 /**
  * 返回經stripslashes處理過的字符串或數組
  * @param $string 需要處理的字符串或數組
  * @return mixed
  */
 function new_stripslashes($string) {
     if(!is_array($string)) return stripslashes($string);
     foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
     return $string;
 }
 
 /**
  * 返回經addslashe處理過的字符串或數組
  * @param $obj 需要處理的字符串或數組www.2cto.com
  * @return mixed
  */
 function new_html_special_chars($string) {
     if(!is_array($string)) return htmlspecialchars($string);
     foreach($string as $key => $val) $string[$key] = new_html_special_chars($val);
     return $string;
 }
 /**
  * 安全過濾函數
  *
  * @param $string
  * @return string
  */
 function safe_replace($string) {
     $string = str_replace('%20','',$string);
     $string = str_replace('%27','',$string);
     $string = str_replace('%2527','',$string);
     $string = str_replace('*','',$string);
     $string = str_replace('"','"',$string);
     $string = str_replace("'",'',$string);
     $string = str_replace('"','',$string);
     $string = str_replace(';','',$string);
     $string = str_replace('<','<',$string);
     $string = str_replace('>','>',$string);
     $string = str_replace("{",'',$string);
     $string = str_replace('}','',$string);
     return $string;
 }
 
 
 
 /**
  * 過濾ASCII碼從0-28的控制字符
  * @return String
  */
 function trim_unsafe_control_chars($str) {
     $rule = '/[' . chr ( 1 ) . '-' . chr ( 8 ) . chr ( 11 ) . '-' . chr ( 12 ) . chr ( 14 ) . '-' . chr ( 31 ) . ']*/';
     return str_replace ( chr ( 0 ), '', preg_replace ( $rule, '', $str ) );
 }
 
 /**
  * 格式化文本域內容
  *
  * @param $string 文本域內容
  * @return string
  */
 function trim_textarea($string) {
     $string = nl2br ( str_replace ( ' ', ' ', $string ) );
     return $string;
 }
 
 /**
  * 將文本格式成適合js輸出的字符串
  * @param string $string 需要處理的字符串
  * @param intval $isjs 是否執行字符串格式化,默認為執行
  * @return string 處理後的字符串
  */
 function format_js($string, $isjs = 1)
 {
     $string = addslashes(str_replace(array("\r", "\n"), array('', ''), $string));
     return $isjs ? 'document.write("'.$string.'");' : $string;
 }
 
 /**
  * 轉義javascript 代碼標記
  *
  * @param $str
  * @return mixed
  */
 function trim_script($str) {
     $str = preg_replace ( '/\<([\/]?)script([^\>]*?)\>/si', '<\\1script\\2>', $str );
     $str = preg_replace ( '/\<([\/]?)iframe([^\>]*?)\>/si', '<\\1iframe\\2>', $str );
     $str = preg_replace ( '/\<([\/]?)frame([^\>]*?)\>/si', '<\\1frame\\2>', $str );
     $str = preg_replace ( '/]]\>/si', ']] >', $str );
     return $str;
 }
 /**
  * 獲取當前頁面完整URL地址
  */
 function get_url() {
     $sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
     $php_self = $_SERVER['PHP_SELF'] ? safe_replace($_SERVER['PHP_SELF']) : safe_replace($_SERVER['SCRIPT_NAME']);
     $path_info = isset($_SERVER['PATH_INFO']) ? safe_replace($_SERVER['PATH_INFO']) : '';
     $relate_url = isset($_SERVER['REQUEST_URI']) ? safe_replace($_SERVER['REQUEST_URI']) : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.safe_replace($_SERVER['QUERY_STRING']) : $path_info);
     return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
 }
 /**
  * 字符截取 支持UTF8/GBK
  * @param $string
  * @param $length
  * @param $dot
  */
 function str_cut($string, $length, $dot = '...') {
     $strlen = strlen($string);
     if($strlen <= $length) return $string;
     $string = str_replace(array(' ',' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), array('∵',' ', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), $string);
     $strcut = '';
     if(strtolower(CHARSET) == 'utf-8') {
         $length = intval($length-strlen($dot)-$length/3);
         $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);
         $strcut = str_replace(array('∵', '&', '"', "'", '“', '”', '—', '<', '>', '·', '…'), array(' ', '&', '"', ''', '“', '”', '—', '<', '>', '·', '…'), $strcut);
     } else {
         $dotlen = strlen($dot);
         $maxi = $length - $dotlen - 1;
         $current_str = '';
         $search_arr = array('&',' ', '"', "'", '“', '”', '—', '<', '>', '·', '…','∵');
         $replace_arr = array('&',' ', '"', ''', '“', '”', '—', '<', '>', '·', '…',' ');
         $search_flip = array_flip($search_arr);
         for ($i = 0; $i < $maxi; $i++) {
             $current_str = ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
             if (in_array($current_str, $search_arr)) {
                 $key = $search_flip[$current_str];
                 $current_str = str_replace($search_arr[$key], $replace_arr[$key], $current_str);
             }
             $strcut .= $current_str;
         }
     }
     return $strcut.$dot;
 }
  
 
 
 /**
  * 獲取請求ip
  *
  * @return ip地址
  */
 function ip() {
     if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
         $ip = getenv('HTTP_CLIENT_IP');
     } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) {
         $ip = getenv('HTTP_X_FORWARDED_FOR');
     } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) {
         $ip = getenv('REMOTE_ADDR');
     } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) {
         $ip = $_SERVER['REMOTE_ADDR'];
     }
     return preg_match ( '/[\d\.]{7,15}/', $ip, $matches ) ? $matches [0] : '';
 }
 
 function get_cost_time() {
     $microtime = microtime ( TRUE );
     return $microtime - SYS_START_TIME;
 }
 /**
  * 程序執行時間
  *
  * @return  int 單位ms
  */
 function execute_time() {
     $stime = explode ( ' ', SYS_START_TIME );
     $etime = explode ( ' ', microtime () );
     return number_format ( ($etime [1] + $etime [0] - $stime [1] - $stime [0]), 6 );
 }
 
 /**
 * 產生隨機字符串
 *
 * @param    int        $length  輸出長度
 * @param    string     $chars   可選的 ,默認為0123456789
 * @return   string     字符串
 */
 function random($length, $chars = '0123456789') {
     $hash = '';
     $max = strlen($chars) - 1;
     for($i = 0; $i < $length; $i++) {
         $hash .= $chars[mt_rand(0, $max)];
     }
     return $hash;
 }
 
 /**
 * 將字符串轉換為數組
 *
 * @param    string  $data   字符串
 * @return   array   返回數組格式,如果,data為空,則返回空數組
 */
 function string2array($data) {
     if($data == '') return array();
     eval("\$array = $data;");
     return $array;
 }
 /**
 * 將數組轉換為字符串
 *
 * @param    array   $data       數組
 * @param    bool    $isformdata 如果為0,則不使用new_stripslashes處理,可選參數,默認為1
 * @return   string  返回字符串,如果,data為空,則返回空
 */
 function array2string($data, $isformdata = 1) {
     if($data == '') return '';
     if($isformdata) $data = new_stripslashes($data);
     return addslashes(var_export($data, TRUE));
 }
 
 /**
 * 轉換字節數為其他單位
 *
 *
 * @param    string  $filesize   字節大小
 * @return   string  返回大小
 */
 function sizecount($filesize) {
     if ($filesize >= 1073741824) {
         $filesize = round($filesize / 1073741824 * 100) / 100 .' GB';
     } elseif ($filesize >= 1048576) {
         $filesize = round($filesize / 1048576 * 100) / 100 .' MB';
     } elseif($filesize >= 1024) {
         $filesize = round($filesize / 1024 * 100) / 100 . ' KB';
     } else {
         $filesize = $filesize.' Bytes';
     }
     return $filesize;
 }
 /**
 * 字符串加密、解密函數
 *
 *
 * @param    string  $txt        字符串
 * @param    string  $operation  ENCODE為加密,DECODE為解密,可選參數,默認為ENCODE,
 * @param    string  $key        密鑰:數字、字母、下劃線
 * @return   string
 */
 function sys_auth($txt, $operation = 'ENCODE', $key = '') {
     $key    = $key ? $key : pc_base::load_config('system', 'auth_key');
     $txt    = $operation == 'ENCODE' ? (string)$txt : base64_decode($txt);
     $len    = strlen($key);
     $code   = '';
     for($i=0; $i<strlen($txt); $i++){
         $k      = $i % $len;
         $code  .= $txt[$i] ^ $key[$k];
     }
     $code = $operation == 'DECODE' ? $code : base64_encode($code);
     return $code;
 }
 
 /**
 * 語言文件處理
 *
 * @param    string      $language   標示符
 * @param    array       $pars   轉義的數組,二維數組,'key1'=>'value1','key2'=>'value2',
 * @param    string      $modules 多個模塊之間用半角逗號隔開,如:member,guestbook
 * @return   string      語言字符
 */
 function L($language = 'no_language',$pars = array(), $modules = '') {
     static $LANG = array();
     static $LANG_MODULES = array();
     static $lang = '';
     if(defined('IN_ADMIN')) {
         $lang = SYS_STYLE ? SYS_STYLE : 'zh-cn';
     } else {
         $lang = pc_base::load_config('system','lang');
     }
     if(!$LANG) {
         require_once PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system.lang.php';
         if(defined('IN_ADMIN')) require_once PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system_menu.lang.php';
         if(file_exists(PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php')) require PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php';
     }
     if(!emptyempty($modules)) {
         $modules = explode(',',$modules);
         foreach($modules AS $m) {
             if(!isset($LANG_MODULES[$m])) require PC_PATH.'languages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.$m.'.lang.php';
         }
     }
     if(!array_key_exists($language,$LANG)) {
         return $LANG['no_language'].'['.$language.']';
     } else {
         $language = $LANG[$language];
         if($pars) {
             foreach($pars AS $_k=>$_v) {
                 $language = str_replace('{'.$_k.'}',$_v,$language);
             }
         }
         return $language;
     }
 }
 
 /**
  * 模板調用
  *
  * @param $module
  * @param $template
  * @param $istag
  * @return unknown_type
  */
 function template($module = 'content', $template = 'index', $style = '') {
     
     if(strpos($module, 'plugin/')!== false) {
         $plugin = str_replace('plugin/', '', $module);
         return p_template($plugin, $template,$style);
     }
     $module = str_replace('/', DIRECTORY_SEPARATOR, $module);
     if(!emptyempty($style) && preg_match('/([a-z0-9\-_]+)/is',$style)) {
     } elseif (emptyempty($style) && !defined('STYLE')) {
         if(defined('SITEID')) {
             $siteid = SITEID;
         } else {
             $siteid = param::get_cookie('siteid');
         }
         if (!$siteid) $siteid = 1;
         $sitelist = getcache('sitelist','commons');
         if(!emptyempty($siteid)) {
             $style = $sitelist[$siteid]['default_style'];
         }
     } elseif (emptyempty($style) && defined('STYLE')) {
         $style = STYLE;
     } else {
         $style = 'default';
     }
     if(!$style) $style = 'default';
     $template_cache = pc_base::load_sys_class('template_cache');
     $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';
     if(file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
         if(!file_exists($compiledtplfile) || (@filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > @filemtime($compiledtplfile))) {    
             $template_cache->template_compile($module, $template, $style);
         }
     } else {
         $compiledtplfile = PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR.'caches_template'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.php';
         if(!file_exists($compiledtplfile) || (file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') && filemtime(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html') > filemtime($compiledtplfile))) {
             $template_cache->template_compile($module, $template, 'default');
         } elseif (!file_exists(PC_PATH.'templates'.DIRECTORY_SEPARATOR.'default'.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html')) {
             showmessage('Template does not exist.'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html');
         }
     }
     return $compiledtplfile;
 }
 
 /**
  * 輸出自定義錯誤
  *
  * @param $errno 錯誤號
  * @param $errstr 錯誤描述
  * @param $errfile 報錯文件地址
  * @param $errline 錯誤行號
  * @return string 錯誤提示
  */
 
 function my_error_handler($errno, $errstr, $errfile, $errline) {
     if($errno==8) return '';
     $errfile = str_replace(PHPCMS_PATH,'',$errfile);
     if(pc_base::load_config('system','errorlog')) {
         error_log('<?php exit;?>'.date('m-d H:i:s',SYS_TIME).' | '.$errno.' | '.str_pad($errstr,30).' | '.$errfile.' | '.$errline."\r\n", 3, CACHE_PATH.'error_log.php');
     } else {
         $str = '<div style="font-size:12px;text-align:left; border-bottom:1px solid #9cc9e0; border-right:1px solid #9cc9e0;padding:1px 4px;color:#000000;font-family:Arial, Helvetica,sans-serif;"><span>errorno:' . $errno . ',str:' . $errstr . ',file:<font color="blue">' . $errfile . '</font>,line' . $errline .'<br /><a href="http://faq.phpcms.cn/?type=file&errno='.$errno.'&errstr='.urlencode($errstr).'&errfile='.urlencode($errfile).'&errline='.$errline.'" target="_blank" style="color:red">Need Help?</a></span></div>';
         echo $str;
     }
 }
 
 /**
  * 提示信息頁面跳轉,跳轉地址如果傳入數組,頁面會提示多個地址供用戶選擇,默認跳轉地址為數組的第一個值,時間為5秒。
  * showmessage('登錄成功', array('默認跳轉地址'=>'http://www.phpcms.cn'));
  * @param string $msg 提示信息
  * @param mixed(string/array) $url_forward 跳轉地址
  * @param int $ms 跳轉等待時間
  */
 function showmessage($msg, $url_forward = 'goback', $ms = 1250, $dialog = '', $returnjs = '') {
     if(defined('IN_ADMIN')) {
         include(admin::admin_tpl('showmessage', 'admin'));
     } else {
         include(template('content', 'message'));
     }
     exit;
 }
 /**
  * 查詢字符是否存在於某字符串
  *
  * @param $haystack 字符串
  * @param $needle 要查找的字符
  * @return bool
  */
 function str_exists($haystack, $needle)
 {
     return !(strpos($haystack, $needle) === FALSE);
 }
 
 /**
  * 取得文件擴展
  *
  * @param $filename 文件名
  * @return 擴展名
  */
 function fileext($filename) {
     return strtolower(trim(substr(strrchr($filename, '.'), 1, 10)));
 }
 
 /**
  * 加載模板標簽緩存
  * @param string $name 緩存名
  * @param integer $times 緩存時間
  */
 function tpl_cache($name,$times = 0) {
     $filepath = 'tpl_data';
     $info = getcacheinfo($name, $filepath);
     if (SYS_TIME - $info['filemtime'] >= $times) {
         return false;
     } else {
         return getcache($name,$filepath);
     }
 }
 
 /**
  * 寫入緩存,默認為文件緩存,不加載緩存配置。
  * @param $name 緩存名稱
  * @param $data 緩存數據
  * @param $filepath 數據路徑(模塊名稱)caches/cache_$filepath/
  * @param $type 緩存類型[file,memcache,apc]
  * @param $config 配置名稱
  * @param $timeout 過期時間
  */
 function setcache($name, $data, $filepath='', $type='file', $config='', $timeout=0) {
     pc_base::load_sys_class('cache_factory','',0);
     if($config) {
         $cacheconfig = pc_base::load_config('cache');
         $cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
     } else {
         $cache = cache_factory::get_instance()->get_cache($type);
     }
 
     return $cache->set($name, $data, $timeout, '', $filepath);
 }
 
 /**
  * 讀取緩存,默認為文件緩存,不加載緩存配置。
  * @param string $name 緩存名稱
  * @param $filepath 數據路徑(模塊名稱)caches/cache_$filepath/
  * @param string $config 配置名稱
  */
 function getcache($name, $filepath='', $type='file', $config='') {
     pc_base::load_sys_class('cache_factory','',0);
     if($config) {
         $cacheconfig = pc_base::load_config('cache');
         $cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
     } else {
         $cache = cache_factory::get_instance()->get_cache($type);
     }
     return $cache->get($name, '', '', $filepath);
 }
 
 /**
  * 刪除緩存,默認為文件緩存,不加載緩存配置。
  * @param $name 緩存名稱
  * @param $filepath 數據路徑(模塊名稱)caches/cache_$filepath/
  * @param $type 緩存類型[file,memcache,apc]
  * @param $config 配置名稱
  */
 function delcache($name, $filepath='', $type='file', $config='') {
     pc_base::load_sys_class('cache_factory','',0);
     if($config) {
         $cacheconfig = pc_base::load_config('cache');
         $cache = cache_factory::get_instance($cacheconfig)->get_cache($config);
     } else {
         $cache = cache_factory::get_instance()->get_cache($type);
     }
     return $cache->delete($name, '', '', $filepath);
 }
 
 摘自chaojie2009的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved