Php 为什么trim()会删除url字符串中的第一个字母
我想去掉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-87wzPhp 为什么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
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))使用路径函数代码>