为了创建面包屑,我有一个字符串如下:
$crumbs = explode("/", $_SERVER["REQUEST_URI"]);
这会生成以下输出:
/ sfm?dir=uploads / sfm / c4ca4238a0b923820dcc509a6f75849b / folder1 / folder2 /
如何从输出中消除这些第一个字符:
/ sfm?dir=uploads / sfm /
以便以哈希
开头答案 0 :(得分:4)
有几种简单的方法可以解决这个问题。
考虑在爆炸之前更换
首先可以在str_replace()
功能之前简单地执行explode()
来电:
# Explicitly replace your input
$input = str_replace($_SERVER["REQUEST_URI"],'/sfm?dir=uploads/sfm/','');
# Then explode as expected
$crumbs = explode("/", $input);
切掉前两个元素
另一种选择是简单地切割原始数组并通过array_slice()
函数从中移除前两个元素:
# Explode your string into an array
$crumbs = explode("/", $_SERVER["REQUEST_URI"]);
# Trim off the first two elements of the array
$crumbs = array_slice($crumbs,2)
答案 1 :(得分:2)
使用str_replace()
尝试以下内容:
$input = '/ sfm?dir=uploads / sfm / c4ca4238a0b923820dcc509a6f75849b / folder1 / folder2 /';
$replace = '/ sfm?dir=uploads / sfm /';
echo str_replace($replace, '', $input);
使用您的代码,以下内容应该有效:
$crumbs = $_SERVER["REQUEST_URI"];
$replace = '/ sfm?dir=uploads / sfm /';
$crumbs = str_replace($replace, '', $crumbs);
$crumbs = explode("/", $crumbs);
可在此处找到工作演示:https://3v4l.org/QOm4S
答案 2 :(得分:1)
使用explode你创建了一个数组,所以我会用我想要显示的数组数据创建一个字符串或另一个数组
$crumbs = explode("/", $_SERVER["REQUEST_URI"]);
//For string
$breadcrumbs = $crumbs[2].$crumbs[3].$crumbs[4];
答案 3 :(得分:1)
在爆炸字符串之前,不需要删除第一个字符。您可以对数组进行切片以删除不需要的网址部分。
示例代码:
$crumbs = explode('/', '/sfm?dir=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1/folder2/');
$result = array_slice($crumbs, 3);
// Do something with result.
即使网址的第一部分以其他内容开头,您的代码仍然有用。
希望这有帮助
答案 4 :(得分:1)
或者您可以在爆炸主字符串时排除此字符串:
$crumbs = explode("/", $_SERVER["REQUEST_URI"]);
$new_string = "";
for ($i = 0 ; $i < count ($crumbs) ; $i++){
if ($crumbs[$i] != 'sfm?dir=uploads'){
$new_string .= '/' . $crumbs[$i];
}
}
return $new_string; //This is your your string