如何在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 /

以便它从散列开始

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

考虑在爆炸前更换

第一种方法可以是在explode()函数之前简单地执行str_replace()调用:

# 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)

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

使用爆炸创建了一个数组,这样我就可以创建一个字符串或另一个数组来显示我想要显示的数组数据

$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