国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

PHP常用工具類大全

Jul 29, 2016 am 09:10 AM
array param return string

<?php /**
 * 助手類
 * @author www.shouce.ren
 *
 */
class Helper
{
/**
* 判斷當(dāng)前服務(wù)器系統(tǒng)
* @return string
*/
public static function getOS(){
if(PATH_SEPARATOR == ':'){
return 'Linux';
}else{
return 'Windows';
}
}
/**
* 當(dāng)前微妙數(shù)
* @return number
*/
public static function microtime_float() {
list ( $usec, $sec ) = explode ( " ", microtime () );
return (( float ) $usec + ( float ) $sec);
}

/**
* 切割utf-8格式的字符串(一個(gè)漢字或者字符占一個(gè)字節(jié))
*
* @author zhao jinhan
* @version v1.0.0
*
*/
public static function truncate_utf8_string($string, $length, $etc = '...') {
$result = '';
$string = html_entity_decode ( trim ( strip_tags ( $string ) ), ENT_QUOTES, 'UTF-8' );
$strlen = strlen ( $string );
for($i = 0; (($i < $strlen) && ($length > 0)); $i ++) {
if ($number = strpos ( str_pad ( decbin ( ord ( substr ( $string, $i, 1 ) ) ), 8, '0', STR_PAD_LEFT ), '0' )) {
if ($length SetLanguage('zh_cn');
$mailer->Host = Yii::app()->params['emailHost']; //<strong>發(fā)送郵件</strong>服務(wù)器
$mailer->Port = Yii::app()->params['emailPort']; //郵件端口
$mailer->Timeout = Yii::app()->params['emailTimeout'];//郵件發(fā)送超時(shí)時(shí)間
$mailer->ContentType = 'text/html';//設(shè)置html格式
$mailer->SMTPAuth = true;
$mailer->Username = Yii::app()->params['emailUserName'];
$mailer->Password = Yii::app()->params['emailPassword'];
$mailer->IsSMTP ();
$mailer->From = $mailer->Username; // 發(fā)件人郵箱
$mailer->FromName = Yii::app()->params['emailFormName']; // 發(fā)件人姓名
$mailer->AddReplyTo ( $mailer->Username );
$mailer->CharSet = 'UTF-8';

// 添加郵件日志
$modelMail = new MailLog ();
$modelMail->accept = $toemail;
$modelMail->subject = $subject;
$modelMail->message = $message;
$modelMail->send_status = 'waiting';
$modelMail->save ();
// <strong>發(fā)送郵件</strong>
$mailer->AddAddress ( $toemail );
$mailer->Subject = $subject;
$mailer->Body = $message;

if ($mailer->Send () === true) {
$modelMail->times = $modelMail->times + 1;
$modelMail->send_status = 'success';
$modelMail->save ();
return true;
} else {
$error = $mailer->ErrorInfo;
$modelMail->times = $modelMail->times + 1;
$modelMail->send_status = 'failed';
$modelMail->error = $error;
$modelMail->save ();
return false;
}
}

/**
* 判斷字符串是utf-8 還是<strong>GB2312</strong>
* @param unknown $str
* @param string $default
* @return string
*/
public static function utf8_<strong>GB2312</strong>($str, $default = '<strong>GB2312</strong>')
{
   $str = preg_replace("/[\x01-\x7F]+/", "", $str);
   if (empty($str)) return $default;

   $preg =  array(
       "<strong>GB2312</strong>" => "/^([\xA1-\xF7][\xA0-\xFE])+$/", //正則判斷是否是<strong>GB2312</strong>
       "utf-8" => "/^[\x{4E00}-\x{9FA5}]+$/u",      //正則判斷是否是漢字(utf8編碼的條件了),這個(gè)范圍實(shí)際上已經(jīng)包含了繁體中文字了
   );

   if ($default == '<strong>GB2312</strong>') {
       $option = 'utf-8';
   } else {
       $option = '<strong>GB2312</strong>';
   }

   if (!preg_match($preg[$default], $str)) {
       return $option;
   }
   $str = @iconv($default, $option, $str);

   //不能轉(zhuǎn)成 $option, 說(shuō)明原來(lái)的不是 $default
   if (empty($str)) {
       return $option;
   }
   return $default;
}
/**
* utf-8和<strong>GB2312</strong>自動(dòng)轉(zhuǎn)化
* @param unknown $string
* @param string $outEncoding
* @return unknown|string
*/
public static function safeEncoding($string,$outEncoding = 'UTF-8')
{
$encoding = "UTF-8";
for($i = 0; $i GB2312";
break;
}
}
}

if (strtoupper ( $encoding ) == strtoupper ( $outEncoding ))
return $string;
else
return @iconv ( $encoding, $outEncoding, $string );
}
/**
* 返回二維數(shù)組中某個(gè)鍵名的所有值
* @param input $array
* @param string $key
* @return array
*/
public static function array_key_values($array =array(), $key='')
{
$ret = array();
foreach((array)$array as $k=>$v){
$ret[$k] = $v[$key];
}
return $ret;
}


/**
* 判斷 文件/目錄 是否可寫(取代系統(tǒng)自帶的 is_writeable 函數(shù))
* @param string $file 文件/目錄
* @return boolean
*/
public static function is_writeable($file) {
if (is_dir($file)){
$dir = $file;
if ($fp = @fopen("$dir/test.txt", 'w')) {
@fclose($fp);
@unlink("$dir/test.txt");
$writeable = 1;
} else {
$writeable = 0;
}
} else {
if ($fp = @fopen($file, 'a+')) {
@fclose($fp);
$writeable = 1;
} else {
$writeable = 0;
}
}

return $writeable;
}
/**
* 格式化單位
*/
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];
}

/**
* 下拉框,單選按鈕 自動(dòng)選擇
*
* @param $string 輸入字符
* @param $param  條件
* @param $type   類型
* selected checked
* @return string
*/
static public function selected( $string, $param = 1, $type = 'select' ) {

$true = false;
if ( is_array( $param ) ) {
$true = in_array( $string, $param );
}elseif ( $string == $param ) {
$true = true;
}
$return='';
if ( $true )
$return = $type == 'select' ? 'selected="selected"' : 'checked="checked"';

echo $return;
}

/**
* 下載遠(yuǎn)程圖片
* @param string $url 圖片的絕對(duì)url
* @param string $filepath 文件的完整路徑(例如/www/images/test) ,此函數(shù)會(huì)自動(dòng)根據(jù)圖片url和http頭信息確定圖片的后綴名
* @param string $filename 要保存的文件名(不含擴(kuò)展名)
* @return mixed 下載成功返回一個(gè)描述圖片信息的數(shù)組,下載失敗則返回false
*/
static public function downloadImage($url, $filepath, $filename) {
//服務(wù)器返回的頭信息
$responseHeaders = array();
//原始圖片名
$originalfilename = '';
//圖片的后綴名
$ext = '';
$ch = curl_init($url);
//設(shè)置curl_exec返回的值包含Http頭
curl_setopt($ch, CURLOPT_HEADER, 1);
//設(shè)置curl_exec返回的值包含Http內(nèi)容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//設(shè)置抓取跳轉(zhuǎn)(http 301,302)后的頁(yè)面
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
//設(shè)置最多的HTTP重定向的數(shù)量
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);

//服務(wù)器返回的數(shù)據(jù)(包括http頭信息和內(nèi)容)
$html = curl_exec($ch);
//獲取此次抓取的相關(guān)信息
$httpinfo = curl_getinfo($ch);
curl_close($ch);
if ($html !== false) {
//分離response的header和body,由于服務(wù)器可能使用了302跳轉(zhuǎn),所以此處需要將字符串分離為 2+跳轉(zhuǎn)次數(shù) 個(gè)子串
$httpArr = explode("\r\n\r\n", $html, 2 + $httpinfo['redirect_count']);
//倒數(shù)第二段是服務(wù)器最后一次response的http頭
$header = $httpArr[count($httpArr) - 2];
//倒數(shù)第一段是服務(wù)器最后一次response的內(nèi)容
$body = $httpArr[count($httpArr) - 1];
$header.="\r\n";

//獲取最后一次response的header信息
preg_match_all('/([a-z0-9-_]+):\s*([^\r\n]+)\r\n/i', $header, $matches);
if (!empty($matches) && count($matches) == 3 && !empty($matches[1]) && !empty($matches[1])) {
for ($i = 0; $i  realpath($filepath), 'width' => $sizeinfo[0], 'height' => $sizeinfo[1], 'orginalfilename' => $originalfilename, 'filename' => pathinfo($filepath, PATHINFO_BASENAME));
}
}
}
}
return false;
}


/**
* 查找ip是否在某個(gè)段位里面
* @param string $ip 要查詢的ip
* @param $arrIP     禁止的ip
* @return boolean
*/
public static function ipAccess($ip='0.0.0.0', $arrIP = array()){
$access = true;
$ip && $arr_cur_ip = explode('.', $ip);
foreach((array)$arrIP as $key=> $value){
if($value == '*.*.*.*'){
$access = false; //禁止所有
break;
}
$tmp_arr = explode('.', $value);
if(($arr_cur_ip[0] == $tmp_arr[0]) && ($arr_cur_ip[1] == $tmp_arr[1])) {
//前兩段相同
if(($arr_cur_ip[2] == $tmp_arr[2]) || ($tmp_arr[2] == '*')){
//第三段為* 或者相同
if(($arr_cur_ip[3] == $tmp_arr[3]) || ($tmp_arr[3] == '*')){
//第四段為* 或者相同
$access = false; //在禁止ip列,則禁止訪問
break;
}
}
}
}
return $access;
}

/**
* @param string $string 原文或者密文
* @param string $operation 操作(ENCODE | DECODE), 默認(rèn)為 DECODE
* @param string $key 密鑰
* @param int $expiry 密文有效期, 加密時(shí)候有效, 單位 秒,0 為永久有效
* @return string 處理后的 原文或者 經(jīng)過(guò) base64_encode 處理后的密文
*
* @example
*
* $a = authcode('abc', 'ENCODE', 'key');
* $b = authcode($a, 'DECODE', 'key');  // $b(abc)
*
* $a = authcode('abc', 'ENCODE', 'key', 3600);
* $b = authcode('abc', 'DECODE', 'key'); // 在一個(gè)小時(shí)內(nèi),$b(abc),否則 $b 為空
*/
public static function authcode($string, $operation = 'DECODE', $key = '', $expiry = 3600) {

$ckey_length = 4;
// 隨機(jī)密鑰長(zhǎng)度 取值 0-32;
// 加入隨機(jī)密鑰,可以令密文無(wú)任何規(guī)律,即便是原文和密鑰完全相同,加密結(jié)果也會(huì)每次不同,增大破解難度。
// 取值越大,密文變動(dòng)規(guī)律越大,密文變化 = 16 的 $ckey_length 次方
// 當(dāng)此值為 0 時(shí),則不產(chǎn)生隨機(jī)密鑰


$key = md5 ( $key ? $key : 'key' ); //這里可以填寫默認(rèn)key值
$keya = md5 ( substr ( $key, 0, 16 ) );
$keyb = md5 ( substr ( $key, 16, 16 ) );
$keyc = $ckey_length ? ($operation == 'DECODE' ? substr ( $string, 0, $ckey_length ) : substr ( md5 ( microtime () ), - $ckey_length )) : '';

$cryptkey = $keya . md5 ( $keya . $keyc );
$key_length = strlen ( $cryptkey );

$string = $operation == 'DECODE' ? base64_decode ( substr ( $string, $ckey_length ) ) : sprintf ( '%010d', $expiry ? $expiry + time () : 0 ) . substr ( md5 ( $string . $keyb ), 0, 16 ) . $string;
$string_length = strlen ( $string );

$result = '';
$box = range ( 0, 255 );

$rndkey = array ();
for($i = 0; $i  0) && substr ( $result, 10, 16 ) == substr ( md5 ( substr ( $result, 26 ) . $keyb ), 0, 16 )) {
return substr ( $result, 26 );
} else {
return '';
}
} else {
return $keyc . str_replace ( '=', '', base64_encode ( $result ) );
}

}

public static function gbkToUtf8($str){
return iconv("GBK", "UTF-8", $str);
}

/**
* 取得輸入目錄所包含的所有目錄和文件
* 以關(guān)聯(lián)數(shù)組形式返回
* author: flynetcn
*/
static public function deepScanDir($dir)
{
$fileArr = array();
$dirArr = array();
$dir = rtrim($dir, '//');
if(is_dir($dir)){
$dirHandle = opendir($dir);
while(false !== ($fileName = readdir($dirHandle))){
$subFile = $dir . DIRECTORY_SEPARATOR . $fileName;
if(is_file($subFile)){
$fileArr[] = $subFile;
} elseif (is_dir($subFile) && str_replace('.', '', $fileName)!=''){
$dirArr[] = $subFile;
$arr = self::deepScanDir($subFile);
$dirArr = array_merge($dirArr, $arr['dir']);
$fileArr = array_merge($fileArr, $arr['file']);
}
}
closedir($dirHandle);
}
return array('dir'=>$dirArr, 'file'=>$fileArr);
}


/**
* 取得輸入目錄所包含的所有文件
* 以數(shù)組形式返回
* author: flynetcn
*/
static public function get_dir_files($dir)
{
if (is_file($dir)) {
return array($dir);
}
$files = array();
if (is_dir($dir) && ($dir_p = opendir($dir))) {
$ds = DIRECTORY_SEPARATOR;
while (($filename = readdir($dir_p)) !== false) {
if ($filename=='.' || $filename=='..') { continue; }
$filetype = filetype($dir.$ds.$filename);
if ($filetype == 'dir') {
$files = array_merge($files, self::get_dir_files($dir.$ds.$filename));
} elseif ($filetype == 'file') {
$files[] = $dir.$ds.$filename;
}
}
closedir($dir_p);
}
return $files;
}

}

太多1000多行呢了保存不了,查看完整并下載 

 下載地址:http://www.shouce.ren/post/d/id/1700

以上就介紹了PHP常用工具類大全,包括了發(fā)送郵件,GB2312方面的內(nèi)容,希望對(duì)PHP教程有興趣的朋友有所幫助。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Penjelasan terperinci tentang penggunaan pulangan dalam bahasa C Penjelasan terperinci tentang penggunaan pulangan dalam bahasa C Oct 07, 2023 am 10:58 AM

Penggunaan pulangan dalam bahasa C ialah: 1. Untuk fungsi yang jenis nilai pulangannya adalah batal, anda boleh menggunakan pernyataan pulangan untuk menamatkan pelaksanaan fungsi lebih awal 2. Untuk fungsi yang jenis nilai pulangannya tidak batal, fungsi bagi penyataan pulangan adalah untuk menamatkan pelaksanaan fungsi Hasilnya dikembalikan kepada pemanggil 3. Menamatkan pelaksanaan fungsi lebih awal, kita boleh menggunakan penyataan pulangan untuk menamatkan pelaksanaan fungsi lebih awal jika fungsi tidak mengembalikan nilai.

Tukar jenis data asas kepada rentetan menggunakan fungsi String.valueOf() Java Tukar jenis data asas kepada rentetan menggunakan fungsi String.valueOf() Java Jul 24, 2023 pm 07:55 PM

Tukar jenis data asas kepada rentetan menggunakan fungsi String.valueOf() Java Dalam pembangunan Java, apabila kita perlu menukar jenis data asas kepada rentetan, kaedah biasa ialah menggunakan fungsi valueOf() kelas String. Fungsi ini boleh menerima parameter jenis data asas dan mengembalikan perwakilan rentetan yang sepadan. Dalam artikel ini, kami akan meneroka cara menggunakan fungsi String.valueOf() untuk penukaran jenis data asas dan menyediakan beberapa contoh kod untuk

Bagaimana untuk menukar tatasusunan char kepada rentetan Bagaimana untuk menukar tatasusunan char kepada rentetan Jun 09, 2023 am 10:04 AM

Kaedah menukar tatasusunan char kepada rentetan: Ia boleh dicapai dengan penugasan Gunakan sintaks {char a[]=" abc d\0efg ";string s=a;} untuk membenarkan tatasusunan char terus memberikan nilai kepada rentetan, dan laksanakan. kod untuk melengkapkan penukaran.

Gunakan fungsi String.replace() Java untuk menggantikan aksara (rentetan) dalam rentetan Gunakan fungsi String.replace() Java untuk menggantikan aksara (rentetan) dalam rentetan Jul 25, 2023 pm 05:16 PM

Gantikan aksara (rentetan) dalam rentetan menggunakan fungsi String.replace() Java Dalam Java, rentetan ialah objek tidak boleh ubah, yang bermaksud apabila objek rentetan dicipta, nilainya tidak boleh diubah suai. Walau bagaimanapun, anda mungkin menghadapi situasi di mana anda perlu menggantikan aksara atau rentetan tertentu dalam rentetan. Pada masa ini, kita boleh menggunakan kaedah replace() dalam kelas String Java untuk melaksanakan penggantian rentetan. Kaedah replace() kelas String mempunyai dua jenis:

Gunakan fungsi String.length() java untuk mendapatkan panjang rentetan Gunakan fungsi String.length() java untuk mendapatkan panjang rentetan Jul 25, 2023 am 09:09 AM

Gunakan fungsi String.length() Java untuk mendapatkan panjang rentetan Dalam pengaturcaraan Java, rentetan ialah jenis data yang sangat biasa Kita selalunya perlu mendapatkan panjang rentetan, iaitu bilangan aksara dalam rentetan. Di Java, kita boleh menggunakan fungsi length() kelas String untuk mendapatkan panjang rentetan. Berikut ialah kod contoh mudah: publicclassStringLengthExample{publ

Isih tatasusunan menggunakan fungsi Array.Isih dalam C# Isih tatasusunan menggunakan fungsi Array.Isih dalam C# Nov 18, 2023 am 10:37 AM

Tajuk: Contoh menggunakan fungsi Array.Sort untuk mengisih tatasusunan dalam Teks C#: Dalam C#, tatasusunan ialah struktur data yang biasa digunakan dan operasi pengisihan tatasusunan selalunya diperlukan. C# menyediakan kelas Array, yang mempunyai kaedah Isih untuk menyusun tatasusunan dengan mudah. Artikel ini akan menunjukkan cara menggunakan fungsi Array.Sort dalam C# untuk mengisih tatasusunan dan memberikan contoh kod khusus. Pertama, kita perlu memahami penggunaan asas fungsi Array.Sort. Susunan.Jadi

Apakah perintah pelaksanaan pemulangan dan akhirnya pernyataan di Jawa? Apakah perintah pelaksanaan pemulangan dan akhirnya pernyataan di Jawa? Apr 25, 2023 pm 07:55 PM

Kod sumber: publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}akhirnya{x=3;}}}# Output Output kod di atas hanya boleh membuat kesimpulan: return dilaksanakan sebelum akhirnya. Mari kita lihat apa yang berlaku pada tahap bytecode. Yang berikut memintas sebahagian kod bait kaedah case1 dan membandingkan kod sumber untuk menganotasi maksud setiap arahan dalam

Kaedah mudah dan jelas untuk menggunakan fungsi PHP array_merge_recursive(). Kaedah mudah dan jelas untuk menggunakan fungsi PHP array_merge_recursive(). Jun 27, 2023 pm 01:48 PM

Apabila pengaturcaraan dalam PHP, kita selalunya perlu menggabungkan tatasusunan. PHP menyediakan fungsi array_merge() untuk melengkapkan penggabungan tatasusunan, tetapi apabila kunci yang sama wujud dalam tatasusunan, fungsi ini akan menimpa nilai asal. Untuk menyelesaikan masalah ini, PHP juga menyediakan fungsi array_merge_recursive() dalam bahasa, yang boleh menggabungkan tatasusunan dan mengekalkan nilai kunci yang sama, menjadikan reka bentuk program lebih fleksibel. array_merge

See all articles