我尝试使用RegExp来匹配网址的一部分。
有问题的网址是:
http://www.example.com/news/region/north-america/
由于我需要这个WordPress URL重写API的正则表达式,主题将只是URL的路径部分:
news/region/north-america
在上面的例子中,我需要能够提取路径的北美部分,但是当使用分页时,路径会变成这样:
news/region/north-america/page/2
我仍然只需要提取北美部分。
我提出的RegExp如下:
^news/region/(.*?)/(.*?)?/?(.*?)?$
但是,这仅与news/region/north-america
news/region/north-america/page/2
据我所知,我需要在north-america
可选后设置尾随斜杠,但添加/?
似乎无效。
答案 0 :(得分:1)
试试这个:
preg_match('/news\/region\/(.*?)\//',"http://www.example.com/news/region/north-america/page/2",$matches);
答案 1 :(得分:0)
您应该使用此正则表达式进行匹配:
^news/region/([^/]+)
即使URI变为news/region/north-america
/news/region/north-america/page/2
答案 2 :(得分:0)
georg's建议规则就像魅力一样:
^news/region/(.*?)(?:/(.*?)/(.*?))?$
对于那些对此正则表达式应用感兴趣的人,我在WP Rewrite API中使用它来获取自定义分类和页码(如果存在)并将相关匹配分配给WP重写:
$ newRules ['新闻/区域/(?)(?:??/()/(*))?$'] =&# 39;?的index.php区域= $匹配[1]&安培; forcetemplate =新闻与寻呼= $匹配[3]&#39 ;;