1

我想从字符串(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,但是在第三个 utlGroup中存在两次。不知道如何处理这个。请帮忙,提前谢谢

4

3 回答 3

1

像这样的东西应该可以解决问题(在最后一个 / 之后删除所有内容)

$newUrl = preg_replace('/(.*)\/.*$/', '$1/', $url);

请参阅:http ://phpfiddle.org/main/code/j7c-8gx并按 F9 以查看 url 的结果:' http://www.example.com/profile/ccc-ddd/Group?tab=23 '

于 2013-11-12T11:38:16.080 回答
0

我会使用 strrpos 女巫找到子字符串的位置,但从末尾开始:

if(strpos($url,"Group")!==false){
    $url = substr($url,0,strrpos($url,"Group"));
}
于 2013-11-12T11:42:16.577 回答
0
%(http://www.example.com/profile/[^/]+/)%

匹配http://www.example.com/profile/后跟这些组之一。

所以preg_match_all('%(http://www.example.com/profile/[^/]+/)%', $urls, $matches)将匹配的部分保存在$matches.

于 2013-11-12T11:43:35.603 回答