• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

frename PHP 灵活文件命名函数 frename_php实例

php 搞代码 3年前 (2022-01-26) 39次浏览 已收录 0个评论

对付这种情况,有的做法是用时间戳对新文件进行重新命名,有的是用序号递增的方法,为了解决麻烦的操作,我在最近编写了一个frename函数,可以灵活依据自定义的规则取得上传文件的新命名,特此分享。

<?php <BR>function frename($file, $rule='{timestamp}', $force = true) { <BR>/* ----------------------- <BR>* author: m35 <BR>* date: 2009/8/11 <BR>* 依据命名规则取得文件的新命名,以处理上传文件等操作时遇到的文件名已存在的情况 <BR>* @parm1 $file -- 文件物理路径 <BR>* @parm2 $rule -- 命名规则, 默认为时间戳 <BR>* @parm3 $force -- 是否强制命名,如果是强制,就算该目标文件不存在也会对其进行命名,默认强制 <BR>* retrun str -- 依据$rule命名的新文件路径 <BR>* 示例: <BR>echo '默认规则(时间戳):' . frename(__FILE__); <BR>echo '<br />序号递增规则:' . frename(__FILE__, '{name}{n}'); <BR>echo '<br />n个前导0的序号递增规则:' . frename(__FILE__, '{name}{5n}'); <BR>echo '<br />用分隔符<span style="color: #E00">_</span>并带有3个前导0的序号递增规则:' <mark>6来源gaodaimacom搞#^代%!码网</mark><strong>搞gaodaima代码</strong>. frename(__FILE__, '{3n}{name}'); <BR>echo '<br />使用时间日期元素组合的规则:' . frename(__FILE__, '{y}_{m}_{d}_{h}_{i}_{s}'); <BR>echo '<br />使用简写形式的时间日期元素组合的规则:' . frename(__FILE__, '{Y}_{M}_{D}_{H}_{i}_{s}'); <BR>echo '<br />其他自定义组合:' . frename(__FILE__, '{timestamp}_{name}{n}'); <BR>----------------------- */ <BR>if (!$force && !file_exists($file)) return $file; <BR>$filename = basename($file); <BR>$path = str_replace($filename, '', $file); <BR>$suffix = substr($filename, strrpos($filename, '.')); <BR>$name = str_replace($suffix, '', $filename); <BR>$timestamp = time(); <BR>list($y, $Y, $m, $M, $d, $D, $h, $H, $i, $s) = explode(',', date('Y,y,m,n,d,j,h,G,i,s')); <BR>$tempname = str_replace( <BR>array('{name}', '{timestamp}', '{y}', '{Y}', '{m}', '{M}', '{d}', '{D}', '{h}', '{H}', '{i}', '{s}'), <BR>array($name, $timestamp, $y, $Y, $m, $M, $d, $D, $h, $H, $i, $s), <BR>$rule <BR>); <BR>if (preg_match('/\{(\d?)n\}/', $rule, $n)) { <BR>preg_match('/]+)>/', $tempname, $sep); <BR>$file = $path . str_replace(array($n[0], $sep[0]), array('', ''), $tempname) . $suffix; <BR>if (!file_exists($file)) return $file; <BR>$tempname = str_replace($sep[0], $sep[1], $tempname); <BR>$tname = $tempname; <BR>$i = 1; <BR>do { <BR>$nn = sprintf("%0{$n[1]}s", $i); <BR>$tempname = str_replace($n[0], $nn, $tname); <BR>$file = $path . $tempname . $suffix; <BR>} <BR>while (file_exists($file)); <BR>return $file; <BR>} else { <BR>$file = $path . $tempname . $suffix; <BR>if (file_exists($file)) return false; <BR>else return $path . $tempname . $suffix; <BR>} <BR>} <BR>echo '默认规则(时间戳):' . frename(__FILE__); <BR>echo '<br />序号递增规则:' . frename(__FILE__, '{name}{n}'); <BR>echo '<br />n个前导0的序号递增规则:' . frename(__FILE__, '{name}{5n}'); <BR>echo '<br />用分隔符<span style="color: #E00">_</span>并带有3个前导0的序号递增规则:' . frename(__FILE__, '{3n}{name}'); <BR>echo '<br />使用时间日期元素组合的规则:' . frename(__FILE__, '{y}_{m}_{d}_{h}_{i}_{s}'); <BR>echo '<br />使用简写形式的时间日期元素组合的规则:' . frename(__FILE__, '{Y}_{M}_{D}_{H}_{i}_{s}'); <BR>echo '<br />其他自定义组合:' . frename(__FILE__, '{timestamp}_{name}{n}'); <BR>?> <BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:frename PHP 灵活文件命名函数 frename_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址