Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php获取url字符串的一部分_Php - Fatal编程技术网

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

如何使用php获取url字符串的一部分,php,Php,我正在使用一个文件管理系统来保护url。不允许操纵url字符串,这会导致页面被终止。 当我删除文件时,我想破例 删除文件时,url字符串始终如下所示: example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1 或 或 因此,字符串的最小值始终包含: example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b (散列是用户I

我正在使用一个文件管理系统来保护url。不允许操纵url字符串,这会导致页面被终止。 当我删除文件时,我想破例

删除文件时,url字符串始终如下所示:

example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1 

因此,字符串的最小值始终包含:

example.com/sfm?delete=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b
(散列是用户ID的md5散列)

那么,我如何获取最小的url字符串呢?

我只会使用。即使散列大小不同,如果您遵循相同的结构,我也会这样做:

$delete = explode("/", $_GET["delete"]);
print_r($delete);
输出至:

Array
(
    [0] => uploads
    [1] => sfm
    [2] => c4ca4238a0b923820dcc509a6f75849b
    [3] => folder1
)
$delete[2]
将给我哈希值。我想这将是最好的方式,即使URL发生了变化。

我只会使用。即使散列大小不同,如果您遵循相同的结构,我也会这样做:

$delete = explode("/", $_GET["delete"]);
print_r($delete);
输出至:

Array
(
    [0] => uploads
    [1] => sfm
    [2] => c4ca4238a0b923820dcc509a6f75849b
    [3] => folder1
)

$delete[2]
将给我哈希值。我想这将是最好的方法,即使URL发生变化。

使用
内爆
数组切片
分解

Explode将把字符串提取到数组中,数组切片将数组剪切到第四个项目,而Inclode将把数组项目抓取到一个新字符串中

$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将把字符串提取到数组中,数组切片将数组剪切到第四个项目,而Inclode将把数组项目抓取到一个新字符串中

$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

1.散列的大小总是一样的吗?2.
uploads/sfm/
是否总是出现?是的,哈希值始终具有相同的字符数,并且uploads/sfm始终位于字符串1中。散列的大小总是一样的吗?2.
uploads/sfm/
总是出现吗?是的,散列总是有相同数量的字符,而且uploads/sfm总是在字符串中
array\u slice
在这里做什么?
array\u slice
获取数组的选定部分。这里的索引从0到4。您已经将
分解限制为
4
,对吗?我是说,我刚刚注意到了。实际上,您可以使用
explode(“/”,$str,4)
将其限制为
4
。可能是这样,但我是这样做的。稍后我会尝试。这里
array\u slice
做什么?
array\u slice
获取数组的选定部分。这里的索引从0到4。您已经将
分解限制为
4
,对吗?我是说,我刚刚注意到了。实际上,您可以使用
explode(“/”,$str,4)
将其限制为
4
。可能是这样,但我是这样做的。我以后再试试。