Php 为什么trim()会删除url字符串中的第一个字母

Php 为什么trim()会删除url字符串中的第一个字母,php,trim,Php,Trim,我想去掉url和尾随字符,只提取url中的id。但是,如果id的第一个字符位于修剪字符串中,则它将删除该id的第一个字符 示例:https://website.com/profile/w300u-87wz?utm_source=ab&utm_medium=email 我想返回w300u-87wz,但返回的300u-87wz没有第一个“w” 如果id以字符串“https://website.com/profile/”中的任何字母开头,则只会在开头去掉该字母 如果字符串“https://websit

我想去掉url和尾随字符,只提取url中的id。但是,如果id的第一个字符位于修剪字符串中,则它将删除该id的第一个字符

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

我想返回w300u-87wz,但返回的300u-87wz没有第一个“w”

如果id以字符串“https://website.com/profile/”中的任何字母开头,则只会在开头去掉该字母

如果字符串“https://website.com/profile/”中不包含字母,则可以正常工作

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

它确实返回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()来实现这一点,如果从“关于”电子邮件中查看,甚至更进一步

如果直接或从“关于电子邮件”部分检索链接:

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

将返回“w300u-87wz”

然后,它将继续运行if from about email以删除“about/”

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

将返回“w300u-87wz”

然而,在查看下面的答案时(标记为正确答案),使用
parse_url()
是剥离url的最干净、最简单的选项

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

ltrim
的第二个参数是要修剪的字符列表。因此,您实际上是要求将
$str
中的任何字母
h、t、p、s、:、/、w、e、b、i、c、o、m、p、r、f、l
。如果您只是想删除
https://www.website.com/profile/
在字符串的前面,
substr($str,strlen($str)https://www.website.com/profile/'));
,或者如@riggsfully所建议的,首先使用
parse_URL
解析URL,然后使用路径或查询字符串等。$URL=“”$path=parse_url($url,PHP_url_path)$零件=分解(“/”,$path)$lastPart=结束($parts);//$最后一部分是“w300u-87wz”@kristina它不是简单地剥离第一个字母,而是剥离所有这些字母,碰巧字符串开头的“w”是唯一与列表匹配的字符
h,t,p,s,:,/,w,e,b,i,c,o,m,p,r,f,l
,“d”,“u”,“z”,“-”和数字不在该列表中。@kristina抱歉,你是对的,我需要澄清的是-ltrim()将从字符列表中删除尽可能多的字符,直到找到一个不在该列表中的字符。在您的例子中,它点击“d”并停止。或者对路径
echo basename(parse_url($s,PHP_url_path))使用路径函数