如何用php获取url字符串的一部分


how to grab part of a url string with php

我正在使用文件管理系统来保护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字符串呢?

使用implodearray_sliceexplode

爆炸会将字符串提取到数组中,数组切片将数组切割到第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改变。