frename PHP flexible file naming function frename

WBOY
Release: 2016-07-29 08:40:46
Original
1393 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 uploaded file 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 operations such as uploading files. The file name already exists
* @parm1 $file -- the physical path of the file
* @parm2 $rule -- the naming rule, the default is the timestamp
* @parm3 $force -- whether to force the naming, if so, even if it is forced If the target file does not exist, it will be named. The default force is
* 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 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}');
----------------------- */
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 '
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}');
?>

The above introduces the frename PHP flexible file naming function frename, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.

Related labels:
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!