Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie gängige benutzerdefinierte PHP-Methoden

So verwenden Sie gängige benutzerdefinierte PHP-Methoden

jacklove
jackloveOriginal
2018-06-09 14:53:032877Durchsuche

1. Monatsanzeige

/** 月份顯示
*   @param  int    $m       1-12
*   @param  int    $type    0:long 1:short(default) 2:chinese
*   @return String
*/
function format_month($m, $type=0){
    $month = array(
                array('', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
                array('', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'),
                array('', '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月')
            );
    return $month[$type][$m];
}

2. Zeichenfolgen filtern und UTF8-alphanumerisches Chinesisch und einige Symbole beibehalten

/** 過濾字符串,保留UTF8字母數字中文及部份符號
*   @param  String  $ostr
*   @return String
*/
function filter_utf8_char($ostr){
    preg_match_all('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $ostr, $matches);
    $str = join('', $matches[0]);
    if($str==''){   //含有特殊字符需要逐個處理
        $returnstr = '';
        $i = 0;
        $str_length = strlen($ostr);
        while ($i<=$str_length){
            $temp_str = substr($ostr, $i, 1);
            $ascnum = Ord($temp_str);
            if ($ascnum>=224){
                $returnstr = $returnstr.substr($ostr, $i, 3);
                $i = $i + 3;
            }elseif ($ascnum>=192){
                $returnstr = $returnstr.substr($ostr, $i, 2);
                $i = $i + 2;
            }elseif ($ascnum>=65 && $ascnum<=90){
                $returnstr = $returnstr.substr($ostr, $i, 1);
                $i = $i + 1;
            }elseif ($ascnum>=128 && $ascnum<=191){ // 特殊字符
                $i = $i + 1;
            }else{
                $returnstr = $returnstr.substr($ostr, $i, 1);
                $i = $i + 1;
            }
        }
        $str = $returnstr;
        preg_match_all(&#39;/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u&#39;, $str, $matches);
        $str = join(&#39;&#39;, $matches[0]);
    }
    return $str;
}

3. Vom Binärstream generierte Datei

/** 二进制流生成文件
*   $_POST 无法解释二进制流,需要用到 $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;] 或 php://input
*   $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;] 和 php://input 都不能用于 enctype=multipart/form-data
*   @param    String    $file   要生成的文件路径
*   @return   boolean
*/
function binary_to_file($file){
    $content = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];  // 需要php.ini设置
    if(empty($content)){
        $content = file_get_contents(&#39;php://input&#39;);    // 不需要php.ini设置,内存压力小
    }
    $ret = file_put_contents($file, $content, true);
    return $ret;
}

4. Aktualisierung des Bildcaches erzwingen

/** 強制更新圖片緩存
*   @param Array $files 要更新的圖片
*   @param int $version 版本
*/
function force_reload_file($files=array(), $version=0){
    $html = &#39;&#39;;
    if(!isset($_COOKIE[&#39;force_reload_page_&#39;.$version])){ // 判斷是否已更新過
        setcookie(&#39;force_reload_page_&#39;.$version, true, time()+2592000);
        $html .= &#39;<script type="text/javascript">&#39;."\r\n";
        $html .= &#39;window.onload = function(){&#39;."\r\n";
        $html .= &#39;setTimeout(function(){window.location.reload(true); },1000);&#39;."\r\n";
        $html .= &#39;}&#39;."\r\n";
        $html .= &#39;</script>&#39;;
        echo $html;
        exit();
    }else{  // 讀取圖片一次,針對chrome優化
        if($files){
            $html .= &#39;<script type="text/javascript">&#39;."\r\n";
            $html .= "<!--\r\n";
            for($i=0,$max=count($files); $i<$max; $i++){
                $html .= &#39;var force_reload_file_&#39;.$i.&#39; =new Image()&#39;."\r\n";
                $html .= &#39;force_reload_file_&#39;.$i.&#39;.src="&#39;.$files[$i].&#39;"&#39;."\r\n";
            }
            $html .= "-->\r\n";
            $html .= &#39;</script>&#39;;
        }
    }
    return $html;
}

5. Konvertieren Sie Dateien in Base64 und konvertieren Sie Base64-Dateien

/** 文件转base64输出
* @param  String $file 文件路径
* @return String base64 string
*/
function fileToBase64($file){
    $base64_file = &#39;&#39;;
    if(file_exists($file)){
        $mime_type = mime_content_type($file);
        $base64_data = base64_encode(file_get_contents($file));
        $base64_file = &#39;data:&#39;.$mime_type.&#39;;base64,&#39;.$base64_data;
    }
    return $base64_file;
}
/** base64转文件输出
* @param  String $base64_data base64数据
* @param  String $file        要保存的文件路径
* @return boolean
*/
function base64ToFile($base64_data, $file){
    if(!$base64_data || !$file){
        return false;
    }
    return file_put_contents($file, base64_decode($base64_data), true);
}

6. Konvertieren Sie hexadezimale Farben in Dezimalzahlen Machen Sie Farbe

/** 16进制颜色转10进制颜色,例#FF0000转rgb(255, 0, 0);
* @param  String $hexcolor
* @return Array
*/
function hex2rgb($hexcolor){
    $color = str_replace(&#39;#&#39;, &#39;&#39;, $hexcolor);
    if (strlen($color) > 3) {
        $rgb = array(
            &#39;r&#39; => hexdec(substr($color, 0, 2)),
            &#39;g&#39; => hexdec(substr($color, 2, 2)),
            &#39;b&#39; => hexdec(substr($color, 4, 2))
        );
    } else {
        $r = substr($color, 0, 1) . substr($color, 0, 1);
        $g = substr($color, 1, 1) . substr($color, 1, 1);
        $b = substr($color, 2, 1) . substr($color, 2, 1);
        $rgb = array(
            &#39;r&#39; => hexdec($r),
            &#39;g&#39; => hexdec($g),
            &#39;b&#39; => hexdec($b)
        );
    }
    return $rgb;
}

7. Ermitteln Sie die Differenzzeit zwischen zwei Zeiträumen

/** 获取两时间段相差时间
* @param datetime $starttime
* @param datetime $endtime
* @return String
*/
function diff_time($starttime, $endtime){
    $diff = abs(strtotime($starttime) - strtotime($endtime));
    $days = (int)($diff/86400);
    $hours = (int)($diff/3600);
    if($days>0){
        $ret = $days.&#39; 天&#39;;
    }elseif($hours>0){
        $ret = $hours.&#39; 小时&#39;;
    }else{
        $ret = &#39;不足1小时&#39;;
    }
    return $ret;
}

8. Verzögerter Ausgabeinhalt

/** 延时输出内容
* @param int $sec 秒数,可以是小数例如 0.3
*/
function cache_flush($sec=2){
    ob_flush();
    flush();
    usleep($sec*1000000);
}

9. Verwenden Sie Exklusiv-ODER (xor)+Schlüssel zum Verschlüsseln und Entschlüsseln von Dateien

/** 文件加密,使用key与原文异或(XOR)生成密文,解密则再执行一次异或即可
* @param String $source 要加密或解密的文件
* @param String $dest   加密或解密后的文件
* @param String $key    密钥
*/
function file_encrypt($source, $dest, $key){
	if(file_exists($source)){
		
		$content = &#39;&#39;;          // 处理后的字符串
		$keylen = strlen($key); // 密钥长度
		$index = 0;
		$fp = fopen($source, &#39;rb&#39;);
		while(!feof($fp)){
			$tmp = fread($fp, 1);
			$content .= $tmp ^ substr($key,$index%$keylen,1);
			$index++;
		}
		fclose($fp);
		return file_put_contents($dest, $content, true);
	}else{
		return false;
	}
}

10. Holen Sie sich den Besitzer, den Gruppenbenutzer und die Berechtigung der Datei oder des Ordners

/** 获取文件或文件夹的拥有者,组用户,及权限
* @param  String $filename
* @return Array
*/
function file_attribute($filename){
    if(!file_exists($filename)){
        return false;
    }
    $owner = posix_getpwuid(fileowner($filename));
    $group = posix_getpwuid(filegroup($filename));
    $perms = substr(sprintf(&#39;%o&#39;,fileperms($filename)),-4);
    $ret = array(
        &#39;owner&#39; => $owner[&#39;name&#39;],
        &#39;group&#39; => $group[&#39;name&#39;],
        &#39;perms&#39; => $perms
    );
    return $ret;
}

11. Leere Verzeichnisse löschen und leeren Unterverzeichnisse

/** 删除所有空目录
* @param String $path 目录路径
*/
function rm_empty_dir($path){
    if($handle = opendir($path)){
        while(($file=readdir($handle))!==false){     // 遍历文件夹
            if($file!=&#39;.&#39; && $file!=&#39;..&#39;){
                $curfile = $path.&#39;/&#39;.$file;          // 当前目录
                if(is_dir($curfile)){                // 目录
                    rm_empty_dir($curfile);          // 如果是目录则继续遍历
                    if(count(scandir($curfile))==2){ // 目录为空,=2是因为. 和 ..存在
                        rmdir($curfile);             // 删除空目录
                    }
                }
            }
        }
        closedir($handle);
    }
}

12. Unicode zu Chinesisch

/* unicode 转 中文
* @param  String $str unicode 字符串
* @return String
*/
function unescape($str) {
    $str = rawurldecode($str);
    preg_match_all("/(?:%u.{4})|&#x.{4};|&#\d+;|.+/U",$str,$r);
    $ar = $r[0];
    foreach($ar as $k=>$v) {
        if(substr($v,0,2) == "%u"){
            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,-4)));
        }elseif(substr($v,0,3) == "&#x"){
            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("H4",substr($v,3,-1)));
        }elseif(substr($v,0,2) == "&#") {
            $ar[$k] = iconv("UCS-2BE","UTF-8",pack("n",substr($v,2,-1)));
        }
    }
    return join("",$ar);
}

In diesem Artikel werden gängige Anpassungsmethoden mit PHP und weitere verwandte Inhalte vorgestellt Bitte achten Sie auf die chinesische PHP-Website.

Verwandte Empfehlungen:

So verschlüsseln/entschlüsseln Sie Dateien mit Exklusiv-ODER (XOR) über PHP

So erhalten Sie über PHP Der Name einer Variablen

Erfahren Sie mehr über das Klonen von PHP-Objekten

Das obige ist der detaillierte Inhalt vonSo verwenden Sie gängige benutzerdefinierte PHP-Methoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn