为什么 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
我想去除 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