如何从 php 中的字符串中删除某些字符

how to delete certain characters from a string in php

为了创建面包屑,我有一个字符串如下:

$crumbs = explode("/", $_SERVER["REQUEST_URI"]);

这会生成以下输出:

/ sfm?dir=uploads / sfm / c4ca4238a0b923820dcc509a6f75849b / folder1 / folder2 /

如何从输出中删除这些第一个字符:

/ sfm?dir=uploads / sfm /

因此它以哈希

开头

使用 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

有几种简单的方法可以解决这个问题。

考虑在爆炸前更换

第一个可能是简单地执行您的 str_replace() call prior to the 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)

你用 explode 创建了一个数组,所以我会用我想要显示的数组数据创建一个字符串或另一个数组

$crumbs = explode("/", $_SERVER["REQUEST_URI"]);

//For string

$breadcrumbs = $crumbs[2].$crumbs[3].$crumbs[4];

在分解字符串之前不需要删除第一个字符。您可以对数组进行切片以删除不需要的 url 部分。

示例代码:

$crumbs = explode('/', '/sfm?dir=uploads/sfm/c4ca4238a0b923820dcc509a6f75849b/folder1/folder2/');

$result = array_slice($crumbs, 3);

// Do something with result.

即使 url 的第一部分以其他内容开头,您的代码仍然有效。

希望对您有所帮助

或者您可以在展开主字符串时排除此字符串:

$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