如何用php抓取部分url字符串

时间:2016-05-05 14:31:26

标签: php

我正在使用文件管理系统并保护网址。不允许对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

(哈希是用户标识的md5哈希值)

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

2 个答案:

答案 0 :(得分:1)

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

$delete = explode("/", $_GET["delete"]);
print_r($delete);

输出到:

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

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

答案 1 :(得分:1)

使用implodearray_sliceexplode

Explode将字符串提取到数组,数组切片将数组切割到第4项,而implode会将数组项目提取到新的字符串。

$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