1.月份顯示
/** 月份顯示 * @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.過濾字串,保留UTF8字母數字中文及部分符號
/** 過濾字符串,保留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('/[\x{FF00}-\x{FFEF}|\x{0000}-\x{00ff}|\x{4e00}-\x{9fff}]+/u', $str, $matches); $str = join('', $matches[0]); } return $str; }
3.二進位流產生檔案
#/** 二进制流生成文件 * $_POST 无法解释二进制流,需要用到 $GLOBALS['HTTP_RAW_POST_DATA'] 或 php://input * $GLOBALS['HTTP_RAW_POST_DATA'] 和 php://input 都不能用于 enctype=multipart/form-data * @param String $file 要生成的文件路径 * @return boolean */ function binary_to_file($file){ $content = $GLOBALS['HTTP_RAW_POST_DATA']; // 需要php.ini设置 if(empty($content)){ $content = file_get_contents('php://input'); // 不需要php.ini设置,内存压力小 } $ret = file_put_contents($file, $content, true); return $ret; }
4.強制更新圖片快取
#/** 強制更新圖片緩存 * @param Array $files 要更新的圖片 * @param int $version 版本 */ function force_reload_file($files=array(), $version=0){ $html = ''; if(!isset($_COOKIE['force_reload_page_'.$version])){ // 判斷是否已更新過 setcookie('force_reload_page_'.$version, true, time()+2592000); $html .= '<script type="text/javascript">'."\r\n"; $html .= 'window.onload = function(){'."\r\n"; $html .= 'setTimeout(function(){window.location.reload(true); },1000);'."\r\n"; $html .= '}'."\r\n"; $html .= '</script>'; echo $html; exit(); }else{ // 讀取圖片一次,針對chrome優化 if($files){ $html .= '<script type="text/javascript">'."\r\n"; $html .= "<!--\r\n"; for($i=0,$max=count($files); $i<$max; $i++){ $html .= 'var force_reload_file_'.$i.' =new Image()'."\r\n"; $html .= 'force_reload_file_'.$i.'.src="'.$files[$i].'"'."\r\n"; } $html .= "-->\r\n"; $html .= '</script>'; } } return $html; }
5.檔案轉base64 與base64轉檔
/** 文件转base64输出 * @param String $file 文件路径 * @return String base64 string */ function fileToBase64($file){ $base64_file = ''; if(file_exists($file)){ $mime_type = mime_content_type($file); $base64_data = base64_encode(file_get_contents($file)); $base64_file = 'data:'.$mime_type.';base64,'.$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.16進位顏色轉10進制顏色
/** 16进制颜色转10进制颜色,例#FF0000转rgb(255, 0, 0); * @param String $hexcolor * @return Array */ function hex2rgb($hexcolor){ $color = str_replace('#', '', $hexcolor); if (strlen($color) > 3) { $rgb = array( 'r' => hexdec(substr($color, 0, 2)), 'g' => hexdec(substr($color, 2, 2)), 'b' => 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( 'r' => hexdec($r), 'g' => hexdec($g), 'b' => hexdec($b) ); } return $rgb; }
7.取得兩個時間段相差時間
/** 获取两时间段相差时间 * @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.' 天'; }elseif($hours>0){ $ret = $hours.' 小时'; }else{ $ret = '不足1小时'; } return $ret; }
8.延時輸出內容
/** 延时输出内容 * @param int $sec 秒数,可以是小数例如 0.3 */ function cache_flush($sec=2){ ob_flush(); flush(); usleep($sec*1000000); }
9.使用異或(xor) key加密解密檔案##/** 文件加密,使用key与原文异或(XOR)生成密文,解密则再执行一次异或即可
* @param String $source 要加密或解密的文件
* @param String $dest 加密或解密后的文件
* @param String $key 密钥
*/
function file_encrypt($source, $dest, $key){
if(file_exists($source)){
$content = ''; // 处理后的字符串
$keylen = strlen($key); // 密钥长度
$index = 0;
$fp = fopen($source, 'rb');
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.取得檔案或資料夾的擁有者,群組使用者,及權限/** 获取文件或文件夹的拥有者,组用户,及权限
* @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('%o',fileperms($filename)),-4);
$ret = array(
'owner' => $owner['name'],
'group' => $group['name'],
'perms' => $perms
);
return $ret;
}
11.刪除空目錄及空白子目錄 /** 删除所有空目录
* @param String $path 目录路径
*/
function rm_empty_dir($path){
if($handle = opendir($path)){
while(($file=readdir($handle))!==false){ // 遍历文件夹
if($file!='.' && $file!='..'){
$curfile = $path.'/'.$file; // 当前目录
if(is_dir($curfile)){ // 目录
rm_empty_dir($curfile); // 如果是目录则继续遍历
if(count(scandir($curfile))==2){ // 目录为空,=2是因为. 和 ..存在
rmdir($curfile); // 删除空目录
}
}
}
}
closedir($handle);
}
}
12.unicode轉中文#/* 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);
}
本篇介紹了使用php 常用自訂方法,更多相關內容請關注php中文網。 相關推薦:
以上是如何使用php 常用自訂方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

WebStorm Mac版
好用的JavaScript開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境