frename PHP flexible file naming function frename_PHP tutorial

WBOY
Release: 2016-07-21 15:44:49
Original
1083 people have browsed it

To deal with this situation, some methods are to rename the new file with a timestamp, and some are to use the method of incrementing the serial number. In order to solve the troublesome operation, I recently wrote a frename function, which can flexibly obtain the upload based on custom rules. The new name of the file is hereby shared.

Copy code The code is as follows:

function frename($file, $rule='{ timestamp}', $force = true) {
/* -----------------------
* author: m35
* date : 2009/8/11
* Obtain the new name of the file according to the naming rules to handle the situation when the file name already exists when uploading files and other operations
* @parm1 $file -- the physical path of the file
* @parm2 $rule -- naming rule, the default is timestamp
* @parm3 $force -- whether to force naming, if so, the target file will be named even if it does not exist, the default is forced
* retrun str -- a new file path named according to $rule
* Example:
echo 'Default rule (timestamp):' . frename(__FILE__);
echo '
Serial number increment rule:' . frename(__FILE__, '{name}{n}');
echo '
Serial number increment rule for n leading 0s:' . frename(__FILE__, '{name} {5n}');
echo '
Use delimiter _ and have a serial number increment rule with 3 leading 0s :' . frename(__FILE__, '{3n}<_>{name}');
echo '
Rules for using time and date element combinations:' . frename(__FILE__, '{y} _{m}_{d}_{h}_{i}_{s}');
echo '
Rules for using abbreviated time and date element combinations:' . frename(__FILE__ , '{Y}_{M}_{D}_{H}_{i}_{s}');
echo '
Other custom combinations:' . 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 'Default rule (timestamp):' . frename(__FILE__);
echo '
Serial number increasing rule:' . frename(__FILE__, '{name}{n} ');
echo '
Serial number increment rule for n leading 0s:' . frename(__FILE__, '{name}{5n}');
echo '
Use the delimiter _ and the sequence number incrementing rule with 3 leading 0s:' . frename(__FILE__, '{3n}<_>{name }');
echo '
Rules for using time and date element combinations:' . frename(__FILE__, '{y}_{m}_{d}_{h}_{i}_ {s}');
echo '
Rules for using abbreviated time and date element combinations:' . frename(__FILE__, '{Y}_{M}_{D}_{H} _{i}_{s}');
echo '
Other custom combinations:' . frename(__FILE__, '{timestamp}_{name}<_>{n}') ;
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/320483.htmlTechArticleTo deal with this situation, some methods are to rename the new file with a timestamp, and some are to use an incrementing serial number Method, in order to solve the troublesome operation, I recently wrote a frename function...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!