ホームページ >バックエンド開発 >PHPチュートリアル >PHP共通関数集(1)_PHPチュートリアル

PHP共通関数集(1)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:49:02772ブラウズ

/**
* addslashes によって処理された文字列または配列を返します
* @param $string 処理される文字列または配列
* @return 混合
​*/
 関数 new_addslashes($string){
     if(!is_array($string)) returnaddslashes($string);
     foreach($string as $key => $val) $string[$key] = new_addslashes($val);
     $string を返します;
 }
 
 /**
* ストリップスラッシュによって処理された文字列または配列を返します
* @param $string 処理される文字列または配列
* @return 混合
​*/
 関数 new_stripslashes($string) {
     if(!is_array($string)) return ストリップスラッシュ($string);
     foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
     $string を返します;
 }
 
 /**
* addslashe によって処理された文字列または配列を返します
* @param $obj 処理される文字列または配列 www.2cto.com
* @return 混合
​*/
 関数 new_html_special_chars($string) {
     if(!is_array($string)) return htmlspecialchars($string);
     foreach($string as $key => $val) $string[$key] = new_html_special_chars($val);
     $string を返します;
 }
 /**
* セキュリティフィルター機能
*
* @param $string
* @戻り文字列
​*/
 関数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);
     $string を返します;
 }
 
 
 
 /**
* 0 ~ 28 の ASCII コードで制御文字をフィルターします
* @return 文字列
​*/
 関数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 テキストフィールドの内容
* @戻り文字列
​*/
 関数トリムテキストエリア($string) {
     $string = nl2br ( str_replace ( ' ', ' ', $string ) );
     $string を返します;
 }
 
 /**
* テキストをjs出力に適した文字列にフォーマットします
* @param string $string 処理対象の文字列
* @param intval $isjs 文字列整形を行うかどうか、デフォルトは実行
* @return string 処理された文字列
​*/
 関数 format_js($string, $isjs = 1)
 {
     $string = addedlashes(str_replace(array("r", "n"), array('', ''), $string));
     $isjsを返しますか? 'document.write("'.$string.'");' : $string;
 }
 
 /**
* JavaScript コードタグをエスケープします
*
* @param $str
* @return 混合
​*/
 関数トリム_スクリプト($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 );
     $str;
を返します  }
 /**
* 現在のページの完全な URL アドレスを取得します
​*/
 関数 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
​*/
 関数 str_cut($string, $length, $dot = '...') {
     $strlen = strlen($string);
     if($strlen      $string = str_replace(array(' ',' ', '&', '"', ''', '"', '"', '—', '<', '>', '·' 、'…')、array('∵'、' '、'&'、'"'、''"、'"'、'"'、'—'、'<'、'>'、' ·', '…'), $string);
     $strcut = '';
     if(strto lower(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                  $tn = 1; $n++; $noc++;
             elseif(194                  $tn = 2; $n += 2; $noc += 2;
             elseif(224                  $tn = 3; $n += 3; $noc += 2;
             elseif(240                  $tn = 4; $n += 4; $noc += 2;
             elseif(248                  $tn = 5; $n += 5; $noc += 2;
             elseif($t == 252 || $t == 253) {
                 $tn = 6; $n += 6; $noc += 2;
             } その他 {
                 $n++;
             }
             if($noc >= $length) {
                 休憩;
             }
         }
         if($noc > $length) {
             $n -= $tn;
         }
         $strcut = substr($string, 0, $n);
         $strcut = str_replace(array('∵', '&', '"', "'", '"', '"', '—', '<', '>', '・', ' …')、array(' '、'&'、'"'、'''、'"'、'"'、'—'、'<'、'>'、'・'、'…' )、$strcut);
     } その他 {
         $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              $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;
         }
     }
     $strcut.$dot を返します;
 }
  
 
 
 /**
* リクエストIPを取得
*
* @return IP アドレス
​*/
 関数 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] : '';
 }
 
 関数 get_cost_time() {
     $microtime = マイクロタイム ( TRUE );
     $microtime を返す - SYS_START_TIME;
 }
 /**
*プログラム実行時間
*
* @return int 単位 ms
​*/
 関数execute_time() {
     $stime = 爆発 ( ' ', SYS_START_TIME );
     $etime = 爆発 ( ' ', マイクロタイム () );
     returnnumber_format (($etime [1] + $etime [0] - $stime [1] - $stime [0]), 6 );
 }
 
 /**
 * 生産随机字符串
 *
 * @param int $length 输出长度
 * @param string $chars 可、默认:0123456789
 * @return string 文字串
 */
 関数ランダム($length, $chars = '0123456789') {
     $ハッシュ = '';
     $max = strlen($chars) - 1;
     for($i = 0; $i          $hash .= $chars[mt_rand(0, $max)];
     }
     $ハッシュを返します;
 }
 
 /**
* 文字列を配列に変換します
*
* @param string $data string
* @return array データが空の場合は、空の配列を返します
​*/
 関数 string2array($data) {
     if($data == '') return array();
     eval("$array = $data;");
     $array を返します;
 }
 /**
* 配列を文字列に変換します
*
* @param 配列 $data 配列
* @param bool $isformdata 0の場合、new_stripslashes処理は使用されません、オプションのパラメータ、デフォルトは1です
* @return string データが空の場合は空を返します
​*/
 関数 array2string($data, $isformdata = 1) {
     if($data == '') return '';
     if($isformdata) $data = new_stripslashes($data);
     return addedlashes(var_export($data, TRUE));
 }
 
 /**
* バイト数を他の単位に変換します
*
*
* @param string $filesize バイトサイズ
* @return string 戻りサイズ
​*/
 関数 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」;
     } その他 {
         $filesize = $filesize.'バイト';
     }
     $filesize を返します;
 }
 /**
* 文字列の暗号化および復号化関数
*
*
* @param string $txt 文字列
* @param string $operation ENCODE は暗号化、DECODE は復号化、オプションのパラメーター、デフォルトは ENCODE、
* @param string $key キー: 数字、文字、アンダースコア
* @戻り文字列
​*/
 関数 sys_auth($txt, $operation = 'ENCODE', $key = '') {
     $key = $key ? $key : pc_base::load_config('system', 'auth_key');
     $txt = $operation == 'エンコード' ? (文字列)$txt :base64_decode($txt);
     $len = strlen($key);
     $code = '';
     for($i=0; $i          $k = $i % $len;
         $code .= $txt[$i] ^ $key[$k];
     }
     $コード = $オペレーション == 'デコード' ? $code :base64_encode($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(定義済み('IN_ADMIN')) {
$lang = SYS_STYLE : 'zh-cn';
} その他 {
$lang = pc_base::load_config('system','lang');
}
If(!$LANG) {
require_once PC_PATH.'langages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system.lang.php';
If(define('IN_ADMIN')) require_once PC_PATH.'langages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.'system_menu.lang.php';
if(file_exists(PC_PATH.'言語'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php')) require PC_PATH.'言語'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.ROUTE_M.'.lang.php';
}
If(!emptyempty($modules)) {
$modules =explode(',',$modules);
foreach($modules AS $m) {
If(!isset($LANG_MODULES[$m])) には PC_PATH.'langages'.DIRECTORY_SEPARATOR.$lang.DIRECTORY_SEPARATOR.$m.'.lang.php';
が必要です }
}
If(!array_key_exists($ language,$LANG)) {
return $LANG['no_ language'].'['.$ language.']';
} その他 {
$言語 = $LANG[$言語];
if($pars) {
foreach($pars AS $_k=>$_v) {
$ language = str_replace('{'.$_k.'}',$_v,$ language);
}
}
return $ language;
}
}

/**
* テンプレート通話
*
* @param $module
* @param $template
* @param $stag
* @return 不明なタイプ
​*/
関数テンプレート($module = 'コンテンツ', $template = 'インデックス', $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) && !define('STYLE')) {
If(定義済み('SITEID')) {
$siteid = サイトID;
} 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) && 定義された('STYLE')) {
         $style = スタイル;
     } その他 {
         $style = 'デフォルト';
     }
     if(!$style) $style = 'デフォルト';
     $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);
         }
     } その他 {
         $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('テンプレートが存在しません。'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html');
         }
     }
     $compiledtplfile を返す;
 }
 
 /**
* カスタムエラーを出力
*
* @param $errno エラー番号
* @param $errstr エラーの説明
* @param $errfile エラーファイルアドレス
* @param $errline エラー行番号
* @return 文字列エラーメッセージ
​*/
 
 function my_error_handler($errno, $errstr, $errfile, $errline) {
     if($errno==8) return '';
     $errfile = str_replace(PHPCMS_PATH,'',$errfile);
     if(pc_base::load_config('システム','エラーログ')) {
         error_log(''.date('m-d H:i:s',SYS_TIME).' | '.$errno.' | '.str_pad($errstr,30).' | ' .$errfile.' | '.$errline."rn", 3, CACHE_PATH.'error_log.php');
     } その他 {
         $str = '

errorno:' . $errno . ',str:' . $errstr . ',file:' . $errfile . ',line' . $errline .'
Need Help?
';
         エコー $str;
     }
 }
 
 /**
* プロンプト情報ページがジャンプします。ジャンプ アドレスが配列で渡されると、ページではユーザーが複数のアドレスを選択するよう求められます。デフォルトのジャンプ アドレスは配列の最初の値で、時間は 5 秒です。
* showmessage('ログイン成功', array('デフォルトのジャンプアドレス'=>'http://www.phpcms.cn'));
* @param string $msg プロンプトメッセージ
* @parammixed(string/array) $url_forwardジャンプアドレス
* @param int $ms ジャンプ待ち時間
​*/
 function showmessage($msg, $url_forward = 'goback', $ms = 1250, $dialog = '', $returnjs = '') {
     if(定義('IN_ADMIN')) {
         include(admin::admin_tpl('showmessage', 'admin'));
     } その他 {
         include(template('コンテンツ', 'メッセージ'));
     }
     終了します;
 }
 /**
* 特定の文字列に文字が存在するかどうかをクエリします
*
* @param $haystack 文字列
* @param $needle 検索する文字
* @return bool
​*/
 関数 str_exists($haystack, $needle)
 {
     return !(strpos($haystack, $needle) === FALSE);
 }
 
 /**
* ファイル拡張子を取得します
*
* @param $filename ファイル名
* @return 拡張子
​*/
 関数 fileext($filename) {
     return strto lower(trim(substr(strrchr($filename, '.'), 1, 10)));
 }
 
 /**
* テンプレートタグキャッシュをロード
* @param string $name キャッシュ名
* @param integer $times キャッシュ時間
​*/
 関数 tpl_cache($name,$times = 0) {
     $filepath = 'tpl_data';
     $info = getcacheinfo($name, $filepath);
     if (SYS_TIME - $info['filemtime'] >= $times) {
         false を返します;
     } その他 {
         return getcache($name,$filepath);
     }
 }
 
 /**
* 書き込みキャッシュ、デフォルトはファイル キャッシュ、キャッシュ設定はロードされません。
* @param $name キャッシュ名
* @param $data キャッシュデータ
* @param $filepath データパス (モジュール名) キャッシュ/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);
     } その他 {
         $cache =cache_factory::get_instance()->get_cache($type);
     }
 
     return $cache->set($name, $data, $timeout, '', $filepath);
 }
 
 /**
* 読み取りキャッシュ、デフォルトはファイル キャッシュ、キャッシュ設定はロードされません。
* @param string $name キャッシュ名
* @param $filepath データパス (モジュール名) キャッシュ/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);
     } その他 {
         $cache =cache_factory::get_instance()->get_cache($type);
     }
     return $cache->get($name, '', '', $filepath);
 }
 
 /**
* キャッシュを削除します。デフォルトはファイル キャッシュであり、キャッシュ構成はロードされません。
* @param $name キャッシュ名
* @param $filepath データパス (モジュール名) キャッシュ/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);
     } その他 {
         $cache =cache_factory::get_instance()->get_cache($type);
     }
     return $cache->delete($name, '', '', $filepath);
 }
 
 摘自chaojie2009の专栏

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/478386.html技術記事 /*** addslashes によって処理された文字列または配列を返します * @param $string 処理される文字列または配列 * @returnmixed*/ function new_addslashes($string){ if(!is_array($string)...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。