使用正则表达式在URL中进行匹配

时间:2013-03-26 13:55:15

标签: php regex wordpress url

我目前正在开展一个项目,我需要这个项目来操纵参数以达到美学目的。

add_rewrite_rule( '([^/]*)/user/([^/]+)','index.php?pagename=$matches[1]&username=$matches[2]', 'top' );
-> would correctly retrieve the userID (in this case 232) from the following URL: http://mysite.com/userlisting/user/232

add_rewrite_rule( '([^/]*)/([^/]*)/user/([^/]+)','index.php?pagename=$matches[1]&username=$matches[2]', 'top' );
-> would correctly retrieve the userID (in this case 232) from the following URL: http://mysite.com/parent_directory/userlisting/user/232

现在我可以添加,让我们说这些规则中的10个,以确保我至少完成了10个级别的层次结构,但我想要做的是使它有点动态,基于当前“用户列表”的级别“有。。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

 add_rewrite_rule( '([^/]*)/([^/]*)/user/([^/]+)','index.php?pagename=$matches[1]&username=$matches[2]', 'top' );
 -> would correctly retrieve the userID (in this case 232) from the following URL: http://mysite.com/parent_directory/userlisting/user/232

,它不会。

  • $ matches [1]是parent_directory
  • $ matches [2]是userlisting
  • $ matches [3]将是232(即userID)

所以你的内部网址是index.php?pagename = parent_directory& username = userlisting


至于actully,解决问题,取决于你想如何处理多个级别,即如何将它们传递给php,一个可能性就是

add_rewrite_rule( '(.+?)/user/([^/]+)','index.php?pagename=$matches[1]&username=$matches[2]', 'top' );

在这种情况下会给出

的index.php页面名= parent_directory / userlisting&安培;用户名= 232

即,与url中存在的目录一样多的目录将使其成为“页面名称” - 您不会排除/作为目录名称的一部分。

但是,如果您希望将不同的层次结构级别不同地呈现给PHP,则可以进行不同的操作。