欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

frename PHP 靈活文件命名函數(shù) frename

 更新時間:2009年09月09日 22:21:50   作者:  
用php上傳文件或進(jìn)行移動等文件操作時,一般都會處理文件命名的問題,如果用原文件名稱,可能會遇到文件名已經(jīng)存在的情況
對付這種情況,有的做法是用時間戳對新文件進(jìn)行重新命名,有的是用序號遞增的方法,為了解決麻煩的操作,我在最近編寫了一個frename函數(shù),可以靈活依據(jù)自定義的規(guī)則取得上傳文件的新命名,特此分享。
復(fù)制代碼 代碼如下:

<?php
function frename($file, $rule='{timestamp}', $force = true) {
/* -----------------------
* author: m35
* date: 2009/8/11
* 依據(jù)命名規(guī)則取得文件的新命名,以處理上傳文件等操作時遇到的文件名已存在的情況
* @parm1 $file -- 文件物理路徑
* @parm2 $rule -- 命名規(guī)則, 默認(rèn)為時間戳
* @parm3 $force -- 是否強(qiáng)制命名,如果是強(qiáng)制,就算該目標(biāo)文件不存在也會對其進(jìn)行命名,默認(rèn)強(qiáng)制
* retrun str -- 依據(jù)$rule命名的新文件路徑
* 示例:
echo '默認(rèn)規(guī)則(時間戳):' . frename(__FILE__);
echo '<br />序號遞增規(guī)則:' . frename(__FILE__, '{name}{n}');
echo '<br />n個前導(dǎo)0的序號遞增規(guī)則:' . frename(__FILE__, '{name}{5n}');
echo '<br />用分隔符<span style="color: #E00;">_</span>并帶有3個前導(dǎo)0的序號遞增規(guī)則:' . frename(__FILE__, '{3n}<_>{name}');
echo '<br />使用時間日期元素組合的規(guī)則:' . frename(__FILE__, '{y}_{m}_vvxyksv9kd_{h}_{i}_{s}');
echo '<br />使用簡寫形式的時間日期元素組合的規(guī)則:' . frename(__FILE__, '{Y}_{M}_{D}_{H}_{i}_{s}');
echo '<br />其他自定義組合:' . 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}', 'vvxyksv9kd', '{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 '默認(rèn)規(guī)則(時間戳):' . frename(__FILE__);
echo '<br />序號遞增規(guī)則:' . frename(__FILE__, '{name}{n}');
echo '<br />n個前導(dǎo)0的序號遞增規(guī)則:' . frename(__FILE__, '{name}{5n}');
echo '<br />用分隔符<span style="color: #E00;">_</span>并帶有3個前導(dǎo)0的序號遞增規(guī)則:' . frename(__FILE__, '{3n}<_>{name}');
echo '<br />使用時間日期元素組合的規(guī)則:' . frename(__FILE__, '{y}_{m}_vvxyksv9kd_{h}_{i}_{s}');
echo '<br />使用簡寫形式的時間日期元素組合的規(guī)則:' . frename(__FILE__, '{Y}_{M}_{D}_{H}_{i}_{s}');
echo '<br />其他自定義組合:' . frename(__FILE__, '{timestamp}_{name}<_>{n}');
?>

相關(guān)文章

  • php 實現(xiàn)301重定向跳轉(zhuǎn)實例代碼

    php 實現(xiàn)301重定向跳轉(zhuǎn)實例代碼

    本文主要介紹php 實現(xiàn)301重定向跳轉(zhuǎn),通過實例代碼讓大家更好的理解重定向的方法,有需要的小伙伴可以參考下
    2016-07-07
  • PHP判斷指定時間段的2個方法

    PHP判斷指定時間段的2個方法

    有時我們需要在一天中的某個時間段進(jìn)行某項任務(wù),或者在一天中的不同小時里進(jìn)行不同的任務(wù),使用PHP如何實現(xiàn)呢,下面的兩個例子都可以解決這個問題
    2014-03-03
  • PHP實現(xiàn) APP端微信支付功能

    PHP實現(xiàn) APP端微信支付功能

    這篇文章主要介紹了PHP實現(xiàn) APP端微信支付功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • php面試中關(guān)于面向?qū)ο蟮南嚓P(guān)問題

    php面試中關(guān)于面向?qū)ο蟮南嚓P(guān)問題

    在本篇文章里小編整理了關(guān)于php面試中關(guān)于面向?qū)ο蟮南嚓P(guān)問題內(nèi)容,以及相關(guān)回答,有需要的朋友們學(xué)習(xí)下。
    2019-02-02
  • php實現(xiàn)websocket實時消息推送

    php實現(xiàn)websocket實時消息推送

    這篇文章主要為大家詳細(xì)介紹了php實現(xiàn)websocket實時消息推送,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • thinkphp跨庫操作的簡單代碼實例

    thinkphp跨庫操作的簡單代碼實例

    下面小編就為大家?guī)硪黄猼hinkphp跨庫操作的簡單代碼實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • discuz論壇 用戶登錄 后臺程序代碼

    discuz論壇 用戶登錄 后臺程序代碼

    discuz論壇的程序可讀性不好,暈暈的.為了整合論壇和網(wǎng)站數(shù)據(jù),又不得不看.
    2008-11-11
  • Laravel學(xué)習(xí)教程之本地化模塊

    Laravel學(xué)習(xí)教程之本地化模塊

    這篇文章主要給大家介紹了關(guān)于Laravel學(xué)習(xí)教程之本地化模塊的相關(guān)資料,文中通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • JS異常處理try..catch語句的作用和實例

    JS異常處理try..catch語句的作用和實例

    這篇文章主要介紹了JS異常處理的作用和實例,即try..catch語句,需要的朋友可以參考下
    2014-05-05
  • Codeigniter框架實現(xiàn)獲取分頁數(shù)據(jù)和總條數(shù)的方法

    Codeigniter框架實現(xiàn)獲取分頁數(shù)據(jù)和總條數(shù)的方法

    這篇文章主要介紹了Codeigniter框架實現(xiàn)獲取分頁數(shù)據(jù)和總條數(shù)的方法,實現(xiàn)了對獲取當(dāng)前頁的數(shù)據(jù)和總條數(shù)方法的封裝,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12

最新評論