frename PHP 靈活檔案命名函數 frename
對付這種情況,有的做法是用時間戳對新文件進行重新命名,有的是用序號遞增的方法,為了解決麻煩的操作,我在最近編寫了一個frename函數,可以靈活依據自訂的規則取得上傳文件的新命名,特此分享。
複製程式碼 程式碼如下:
function frename($file, $rule='{timestample='{timestamp }', $force = true) {
/* -----------------------
* author: m35
* date: 2009/8/11
* 依據命名規則取得檔案的新命名,以處理上傳檔案等操作時遇到的檔案名稱已存在的情況
* @parm1 $file -- 檔案實體路徑
* @parm2 $rule -- 命名規則, 預設為時間戳
* @parm3 $force -- 是否強制命名,如果是強制,就算該目標檔案不存在也會對其進行命名,預設強制
* retrun str -- 依據$rule命名的新檔案路徑
* 範例:
echo '預設規則(時間戳):' . frename(__FILE__);
echo '
序號遞增規則:' . frename(__FILE__, '{name}{n}');
echo '
n個前導0的序號遞增規則:' . frename(__FILE__, '{name}{5n}') ;
echo '
用分隔符號_並帶有3個前導0的序號遞增規則:' . frename(__FILE__, '{3n}<_>{name}' );
echo '
使用時間日期元素組合的規則:' . frename(__FILE__, '{y}_{m}_{d}_{h}_{i}_{s}' );
echo '
使用簡寫形式的時間日期元素組合的規則:' . frename(__FILE__, '{Y}_{M}_{D}_{H}_{i}_{ s}');
echo '
其他自訂組合:' . frename(__FILE__, '{timestamp}_{name}<_>{n}');
----- ------------------ */
if (!$force && !file_exists($file)) return $file;
$filename = basename($file );
$path = str_replace($filename, '', $file);
$suffix = substr($filename, strrpos($filename, '.'));
$name = str_replace( $suffix, '', $filename);
$timestamp = time();
list($y, $Y, $m, $M, $d, $D, $h, $H, $ i, $s) = explode(',', date('Y,y,m,n,d,j,h,G,i,s'));
$tempname = str_replace(
array ('{name}', '{timestamp}', '{y}', '{Y}', '{m}', '{M}', '{d}', '{D}', ' {h}', '{H}', '{i}', '{s}'),
array($name, $timestamp, $y, $Y, $m, $M, $d, $D, $h, $H, $i, $s),
$rule
);
if (preg_match('/{(d?)n}/', $rule, $n )) {
preg_match('/]+)>/', $tempname, $sep);
$file = $path . str_replace(array($n[0], $sep [0]), array('', ''), $tempname) . $suffix;
if (!file_exists($file)) return $file;
$tempname = str_replace($sep[0] , $sep[1], $tempname);
$tname = $tempname;
$i = 1;
do {
$nn = sprintf("%0{$n[1] }s", $i);
$tempname = str_replace($n[0], $nn, $tname);
$file = $path . $tempname . $suffix;
}
while (file_exists($file));
return $file;
} else {
$file = $path . $tempname . $suffix;
if (file_exists($file)) return false;
else return $path . $tempname . $suffix;
}
}
echo '預設規則(時間戳):' . frename(__FILE__);
echo '
序號遞增規則:' . frename(__FILE__, '{name}{n}');
echo '
n個前導0的序號遞增規則:' . frename(__FILE__, '{name} {5n}');
echo '
用分隔符號_並帶有3個前導0的序號遞增規則:' . frename(__FILE__, '{3n}<_>{name}');
echo '
使用時間日期元素組合的規則:' . frename(__FILE__, '{y}_{m}_{d}_{h}_{i} _{s}');
echo '
使用簡寫形式的時間日期元素組合的規則:' . frename(__FILE__, '{Y}_{M}_{D}_{H}_ {i}_{s}');
echo '
其他自訂組合:' . frename(__FILE__, '{timestamp}_{name}<_>{n}');
?>
以上就介紹了 frename PHP 彈性檔案命名函數 frename,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

許多用戶在選擇智慧型手錶的時候都會選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門的選擇,不少用戶都很好奇華為GT3pro和GT4有什麼區別,下面就給大家介紹一下二者。華為GT3pro和GT4有什麼差別一、外觀GT4:46mm和41mm,材質是玻璃鏡板+不鏽鋼機身+高分纖維後殼。 GT3pro:46.6mm和42.9mm,材質是藍寶石玻璃鏡+鈦金屬機身/陶瓷機身+陶瓷後殼二、健康GT4:採用最新的華為Truseen5.5+演算法,結果會更加的精準。 GT3pro:多了ECG心電圖和血管及安

php blob轉file的方法:1.建立一個php範例檔;2、透過「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })} 」方法實作Blob轉File即可。

使用Java的File.length()函數取得檔案的大小檔案大小是在處理檔案作業時很常見的一個需求,Java提供了一個很方便的方法來取得檔案的大小,即使用File類別的length()方法。本文將介紹如何使用此方法來取得檔案的大小,並給出對應的程式碼範例。首先,我們需要建立一個File物件來表示我們想要取得大小的檔案。以下是建立File物件的方法:Filef

想了解更多關於開源的內容,請造訪:51CTO鴻蒙開發者社群https://ost.51cto.com運行環境DAYU200:4.0.10.16SDK:4.0.10.15IDE:4.0.600一、建立應用程式點擊File- >newFile->CreateProgect。選擇模版:【OpenHarmony】EmptyAbility:填寫項目名,shici,應用包名com.nut.shici,應用儲存位置XXX(不要有中文,特殊字符,空格)。 CompileSDK10,Model:Stage。 Device

使用Java的File.renameTo()函數重命名檔案在Java程式設計中,我們經常需要對檔案進行重命名的操作。 Java提供了File類別來處理檔案操作,其中的renameTo()函數可以方便地重新命名檔案。本文將介紹如何使用Java的File.renameTo()函數來重新命名文件,並提供對應的程式碼範例。 File.renameTo()函數是File類別的一個方法,

為什麼截圖工具在Windows11上不起作用了解問題的根本原因有助於找到正確的解決方案。以下是截圖工具可能無法正常工作的主要原因:對焦助手已開啟:這可以防止截圖工具開啟。應用程式損壞:如果截圖工具在啟動時崩潰,則可能已損壞。過時的圖形驅動程式:不相容的驅動程式可能會幹擾截圖工具。來自其他應用程式的干擾:其他正在運行的應用程式可能與截圖工具衝突。憑證已過期:升級過程中的錯誤可能會導致此issu簡單的解決方案這些適合大多數用戶,不需要任何特殊的技術知識。 1.更新視窗與Microsoft應用程式商店應用程

使用java的File.getParent()函數取得檔案的父路徑在Java程式設計中,我們經常需要操作檔案和資料夾。有時候,我們需要取得一個檔案的父路徑,也就是該檔案所在資料夾的路徑。 Java的File類別提供了getParent()方法用來取得檔案或資料夾的父路徑。 File類別是Java對檔案和資料夾的抽象表示,它提供了一系列操作檔案和資料夾的方法。其中,get

使用java的File.getParentFile()函數取得檔案的父目錄在Java程式設計中,我們經常需要操作檔案和資料夾。當我們需要取得檔案的父目錄時,可以使用Java提供的File.getParentFile()函數來完成。本文將介紹如何使用這個函數並提供程式碼範例。 Java中的File類別是用於操作檔案和資料夾的主要類別。它提供了許多方法來取得和操作文件的屬性
