我想从字符串(url)中删除特定模式之后的所有字符。以下是一些示例网址。
http://www.example.com/profile/aaa-bbb/Group
http://www.example.com/profile/ccc-ddd/Group?tab=23
http://www.example.com/profile/Group-sss-t/Group
http://www.example.com/profile/ppp-qqq/
我需要输出为,
http://www.example.com/profile/aaa-bbb/
http://www.example.com/profile/ccc-ddd/
http://www.example.com/profile/Group-sss-t/
http://www.example.com/profile/ppp-qqq/
实际上,我需要删除Group
之后的所有字符,但在第三个utl中,Group
出现两次。不知道如何处理这个问题。请帮助,提前谢谢
答案 0 :(得分:1)
这样的事情可以解决问题(删除最后一个/之后的所有内容)
$newUrl = preg_replace('/(.*)\/.*$/', '$1/', $url);
请参阅:http://phpfiddle.org/main/code/j7c-8gx并按F9查看网址结果:'http://www.example.com/profile/ccc-ddd/Group?tab=23'
答案 1 :(得分:0)
我会使用strrpos女巫找到子串的位置,但从结尾开始:
if(strpos($url,"Group")!==false){
$url = substr($url,0,strrpos($url,"Group"));
}
答案 2 :(得分:0)
%(http://www.example.com/profile/[^/]+/)%
匹配 http://www.example.com/profile/ ,然后是其中一个组。
因此preg_match_all('%(http://www.example.com/profile/[^/]+/)%', $urls, $matches)
将匹配的部分保存在$matches
。