Php 如何在中查找类别名称、页码http://domain.com/post-type/category/category-name/page/2
我有一个如下格式的URL:Php 如何在中查找类别名称、页码http://domain.com/post-type/category/category-name/page/2,php,regex,wordpress,Php,Regex,Wordpress,我有一个如下格式的URL: http://domain.com/post-type/category/category-name/page/2 并且只需要提取类别名称,不管接下来发生什么 例如,在url中: http://domain.com/projects/category/print/page/2 我只想要一个字 打印 我正在尝试这个正则表达式:category\/(.+)\/(?(?=(?:category)\/)^ |(.+)\/(.+)\/?$通过一些搜索拼凑在一起,但我真的被正则表
http://domain.com/post-type/category/category-name/page/2
并且只需要提取类别名称
,不管接下来发生什么
例如,在url中:
http://domain.com/projects/category/print/page/2
我只想要一个字
打印
我正在尝试这个正则表达式:category\/(.+)\/(?(?=(?:category)\/)^ |(.+)\/(.+)\/?$
通过一些搜索拼凑在一起,但我真的被正则表达式搞糊涂了
注意
我是用PHP执行的(我认为是用正则表达式,对吗?)。目前,Wordpress的代码如下:$newrules['projects/category/(.*/)$”]=“index.php?post_type=project&project_cat=$matches[1]”
似乎在projects/category/
编辑
也可以获得页码吗
例如:http://domain.com/post-type/category/category-name/page/2
是否可以仅将
类别名称
和2
作为单独的匹配项?您必须使用一个未冻结的匹配器+?
后面的?
表示未就绪,它在找到自己后面的第一个模式后停止匹配。在本例中,这是/.+
/category\/(.+?)\/.+/
你可以试试这个正则表达式
(?<=http:\/\/domain\.com\/projects\/category\/)([^\/]+)
(?啊,这很好。很抱歉扩展问题,但我现在似乎对重写规则有问题,我以前的重写规则是[projects/category/(.*/)$]=>index.php?post_type=project&project_cat=$matches[1]
-有没有办法在PHP重写中实现这个新的工作正则表达式?请给我具体的from
和to
URL来回答您的问题。谢谢-http://domain.com/projects/category/print/page/2
至http://domain.com/index.php?post_type=project&project_cat=$matches[1]&paged=$matches[2]
这个/category\/(.+)\/page\/(\d+)$/
怎么样?由于某种原因,它似乎不起作用,是因为斜杠转义吗?当前的规则是:项目/category/(.*/)$
我想这是我编辑的答案,经过一些修改:项目/category\/(.+?)\/page\/(.+?)$
但由于某种原因,当我将其设置为$rules['projects/category/(.+?)/page/(.+?)$”]时,在Wordpress/PHP中这不起作用。