我正在使用文件管理系统来保护url。不允许对url字符串进行操作,这会导致页面失效。当我删除文件时,我想对此做一个例外。
删除文件时,url字符串总是如下所示:
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1
或
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/file.jpg
或
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1/file.jpg
所以字符串的最小值总是包含:
example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b
(该散列是用户ID的md5散列)
那么我该如何获取最小url字符串呢?
使用implode
、array_slice
、explode
。
爆炸会将字符串提取到数组中,数组切片将数组切割到第4个项目,内爆会将数组项目抓取到新的字符串中。
$str = 'example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1 ';
echo $output = implode('/', array_slice(explode("/", $str), 0, 4)); //example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b
我只会使用explode()
。即使哈希大小不相同,如果你遵循相同的结构,我也会这样做:
$delete = explode("/", $_GET["delete"]);
print_r($delete);
输出到:
Array
(
[0] => uploads
[1] => sfm
[2] => c4ca4238a0b923820dcc509a6f75849b
[3] => folder1
)
$delete[2]
会给我散列。我想这将是最好的方式,即使URL改变。