Home Backend Development PHP Tutorial frename PHP flexible file naming function frename

frename PHP flexible file naming function frename

Jul 29, 2016 am 08:40 AM
echo file gt

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:


<?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 /&gt ;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.

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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are the differences between Huawei GT3 Pro and GT4? What are the differences between Huawei GT3 Pro and GT4? Dec 29, 2023 pm 02:27 PM

What are the differences between Huawei GT3 Pro and GT4?

Hongmeng native application random poetry Hongmeng native application random poetry Feb 19, 2024 pm 01:36 PM

Hongmeng native application random poetry

Use java's File.length() function to get the size of the file Use java's File.length() function to get the size of the file Jul 24, 2023 am 08:36 AM

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

How to convert php blob to file How to convert php blob to file Mar 16, 2023 am 10:47 AM

How to convert php blob to file

Fix: Snipping tool not working in Windows 11 Fix: Snipping tool not working in Windows 11 Aug 24, 2023 am 09:48 AM

Fix: Snipping tool not working in Windows 11

Rename files using java's File.renameTo() function Rename files using java's File.renameTo() function Jul 25, 2023 pm 03:45 PM

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

Use java's File.getParentFile() function to get the parent directory of the file Use java's File.getParentFile() function to get the parent directory of the file Jul 27, 2023 am 11:45 AM

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 Five selected Go language open source projects to take you to explore the technology world Jan 30, 2024 am 09:08 AM

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

See all articles