frename PHP flexible file naming function frename
Jul 29, 2016 am 08:40 AMTo 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:
<?php
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 '<br />Serial number increment rule:' . frename(__FILE__, '{name}{n}');
echo '<br />Serial number increment rule for n leading 0s:' . frename( __FILE__, '{name}{5n}');
echo '<br />Use the delimiter <span>_</span> and the sequence number incrementing rule with 3 leading 0s:' . frename(__FILE__ , '{3n}<_>{name}');
echo '<br />Rules for using time and date element combinations:' . frename(__FILE__, '{y}_{m}_{d} _{h}_{i}_{s}');
echo '<br />Rules for using abbreviated time and date element combinations:' . frename(__FILE__, '{Y}_{M}_ {D}_{H}_{i}_{s}');
echo '<br />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 '<br /> ;Serial number increment rule:' . frename(__FILE__, '{name}{n}');
echo '<br />Serial number increment rule for n leading 0s:' . frename(__FILE__, '{name}{ 5n}');
echo '<br />Use the delimiter <span>_</span> and the sequence number incrementing rule with 3 leading 0s:' . frename(__FILE__, '{3n}< _>{name}');
echo '<br />Rules for using time and date element combinations:' . frename(__FILE__, '{y}_{m}_{d}_{h}_{i }_{s}');
echo '<br />Rules for using abbreviated time and date element combinations:' . frename(__FILE__, '{Y}_{M}_{D}_{H} _{i}_{s}');
echo '<br />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.

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

What are the differences between Huawei GT3 Pro and GT4?

Hongmeng native application random poetry

Use java's File.length() function to get the size of the file

Fix: Snipping tool not working in Windows 11

Rename files using java's File.renameTo() function

Use java's File.getParentFile() function to get the parent directory of the file

Five selected Go language open source projects to take you to explore the technology world
