最多n级,每级最多x个文件/目录,id是y,路径是什么实现方法---初步校验是正确的?!

来源:互联网 发布:出国推荐信 知乎 编辑:程序博客网 时间:2024/05/16 00:27


//by qidizi 实现 按id分目录,如当前id数为1000,目录为2级,最多一个目录可以放文件/目录1000,就是0/1
//2级,1000个,id=1000*1000 才1/0,就是说1目录下有1000个目录,而下面目录每个放1000个文件
//echo '<br />'. _qidiziIDUrl ('{$id, 2, 1000}/k',1000000); ==== 1/0/k 


private function _qidiziIDUrl ($url,$id) {
$id = (int)$id;
if (!preg_match_all("/\{\\\$id\s*,\s*(\d+)\s*,\s*(\d+)\}/",$url,$a,PREG_SET_ORDER) )
return $url;
$ma = $a[0][0];
$part = (int)$a[0][1];
$max = (int)$a[0][2];
if (!$part || !$max)
return $url;
$idPart = array();
$last = $id;

while ($part > 0) {
$pow = pow($max,$part);
$idPart[] = floor($last/$pow);
$last = $last%$pow;
$part--;
}

$idPart = implode('/',$idPart);
return str_replace($ma,$idPart,$url);
}
0 0
原创粉丝点击