如何解决从开始和结束字符串中删除字符
我只想从 URL 输出 MYID
。到目前为止我做了什么:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
echo substr($url,strpos($url,"?out="));
输出:https://whatever.expamle.com/display/MYID
$url = preg_replace('#^https?://whatever.expamle.com/display/#','',$url);
echo $url;
输出:MYID?out=1234567890?Browser=0?OS=1
我怎样才能把它结合起来?谢谢。
解决方法
对于更通用的解决方案,我们可以使用带有 preg_match_all
的正则表达式:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
preg_match_all("/\/([^\/]+?)\?/",$url,$matches);
print_r($matches[1][0]); // MYID
,
当字符串始终是统一资源定位符 (URL) 时,就像您在问题中提出的那样,
给定以下字符串:
$url = "https://whatever.expamle.com/display/MYID?out=1234567890?Browser=0?OS=1";
您可以从首先解析它中受益:
$parts = parse_url($url);
然后利用 MYID 是最后一个路径组件这一事实:
$str = preg_replace(
'~^.*/(?=[^/]*$)~' /* everything but the last path component */,'',$parts['path']
);
echo $str,"\n"; # MYID
然后根据您的需要,您可以与任何其他部分组合,例如仅最后一个带有查询字符串的路径组件:
echo "$str?$parts[query]","\n"; # MYID?out=1234567890?Browser=0?OS=1
以防万一:如果字符串已经表示结构化数据,请使用专用解析器对其进行分割(将其切成小块)。然后更容易获得您正在寻找的结果。
如果您使用的是 Linux/Unix,则它更容易并且无需正则表达式即可工作,因为 basename()
函数返回路径的最后一个组件(不适用于 Windows):
echo basename(parse_url($url,PHP_URL_PATH)),'?',parse_url($url,PHP_URL_QUERY),"\n"
;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。