首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从URI中提取正则表达式

问从URI中提取正则表达式
EN

Stack Overflow用户
提问于 2010-02-26 23:04:21
回答 4查看 1.4K关注 0票数 1

我需要一个正则表达式从两种URI中提取。

代码语言:javascript
复制
http://example.com/path/to/page/?filter
http://example.com/path/to/?filter

基本上,在这两种情况下,我都需要隔离并返回

代码语言:javascript
复制
/path/to

和

代码语言:javascript
复制
?filter

也就是说,/path/to和filter都是任意的。因此,我想我需要2正则表达式吗?我正在PHP中这样做,但是如果有人能帮助我处理正则表达式,我就可以找出其余的。谢谢你抽出时间:)

编辑:所以只想清理一下,例如

代码语言:javascript
复制
http://example.com/help/faq/?sort=latest

我想让/help/faq和?sort=latest

另一个例子

代码语言:javascript
复制
http://example.com/site/users/all/page/?filter=none&status=2

我想要/site/users/all和?filter=none&status=2。请注意,我不想得到page!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-26 23:16:05

与regex相比,使用url可能更容易,副作用更少:

代码语言:javascript
复制
$querystring = parse_url($url, PHP_URL_QUERY); 
$path = parse_url($var, PHP_URL_PATH);

然后,您可以在路径上使用first获取前两段:

代码语言:javascript
复制
$segments = explode("/", $path);
票数 4
EN

Stack Overflow用户

发布于 2010-02-26 23:12:16

试试这个:

代码语言:javascript
复制
^http://[^/?#]+/([^/?#]+/[^/?#]+)[^?#]*\?([^#]*)

这将为您获得前两个URL路径段和查询。

票数 0
EN

Stack Overflow用户

发布于 2010-02-26 23:12:23

未测试,但:

代码语言:javascript
复制
^https?://[^ /]+[^ ?]+.*

哪一个应该匹配带有路径的http和https url,第二个参数应该匹配,直到?(例如,从?过滤器)和.* (除\n以外)任何字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2345445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档