为什么 trim() 在 url 字符串 php 中删除第一个字母

Why trim() is removing first letter if it is in the url string php

我想去除 url 和尾随字符以仅提取 url 中的 ID。但是,如果它在 trim 字符串中,它将删除 id 的第一个字符。

示例:https://website.com/profile/w300u-87wz?utm_source=ab&utm_medium=email

我想 return w300u-87wz 但 returning 300u-87wz 没有第一个 "w"。

如果 id 以字符串 "https: //website.com/profile/" 中的任何字母开头,它只会在开头去除该字母。

如果它不包含字符串中的字母 "https: //website.com/profile/" 它工作正常。

示例:https://website.com/profile/d300u-87wz?utm_source=ab&utm_medium=email

确实如此 return d300u-87wz

if($platformsearch == "category_website"){
    $str = $searchuser2;
    $str2 = ltrim($str, "https://www.website.com/profile/");
    $str3 = strtok($str2, '?');

    $searchuser2 = $str3;
}

我试过 ltrim() 和 trim()。

我怎样才能让它去掉确切的字符串并保留其余的?

更新... 我可以使用 str_replace() 来解决这个问题,如果从 "about" 电子邮件中查看,我会更进一步。

如果 link 是直接或从关于电子邮件部分检索到的:

if($platformsearch == "category_website"){

$str = $searchuser2;
$str2 = str_replace("https://www.website.com/profile/", "", $str);
$str3 = str_replace("about/", "", $str2);
$str4 = strtok($str3, '?');
$searchuser2 = $str4;

}

示例:https://website.com/profile/w300u-87wz?utm_source=ab&utm_medium=email

会 return "w300u-87wz"

然后会继续运行通过if from about email删除"about/"

示例:https://website.com/profile/about/w300u-87wz?utm_source=ab&utm_medium=email

会 return "w300u-87wz"

然而,在看到答案时,下面(标记为正确答案)使用 parse_url() 是剥离 url![ 的最干净和最简单的选择=16=]

混合使用 parse_url()explode() 以及 end() 是给这只猫剥皮的一种方法。

$s = 'https: //website.com/profile/w300u-87wz?utm_source=ab&utm_medium=email';

$a = parse_url($s);

$bits = explode('/', $a['path']); 
echo end($bits); 

结果

w300u-87wz