在生成重写规则的wp_rewrite期间,使用正则表达式从固定链接url获取标记

时间:2011-01-07 作者:user2271

我正在处理wp\\u重写,在过去的几个小时里,我一直在试图重新理解正则表达式(我似乎忘记了)这对某人来说可能非常容易。基本上,我想匹配一个alpha表达式,并在第一次出现正斜杠时停止。下面是我正在做的:

我有一个url

http://www.mydomain.com/basename/uniquename/page/2/

我想让uniquename了解以下内容

\'basename/(.*)/page/([0-9]{4})/?$\' => \'index.php?post_type=basename&uniquenametaxonomy=\'.$wp_rewrite->preg_index(1).\'&paged=\'.$wp_rewrite->preg_index(2),
显然,(*)匹配/page/和uniquename,并为我提供如下查询字符串

?post\\u类型=basname(&U);uniquenametaxonomy=uniquename%2Fpage%2F2

我希望是这样

?post\\u类型=basname(&U);uniquename分类法=uniquename&;分页=2

我知道这必须非常简单,我想匹配uniquename并在第一次出现正斜杠时停止。

3 个回复
最合适的回答,由SO网友:scribu 整理而成

代替(.*) 具有(.*?). 问号表示它“懒惰”。

此外,更换([0-9]{4}) 具有(\\d+).

看见http://www.regular-expressions.info/reference.html

SO网友:user2271

想更新答案,让您知道,在所有额外的wp\\U重写中,我正在做我需要做的事情

([a-z]*?) 而不是(.*?) 当我在解析url中的单词和@scribu的答案时(\\d+) 分析数字时。但别忘了?

SO网友:Jan Fabry

“直到第一个正斜杠的所有内容”表示为[^/]*. 这个[] 指示一个字符类(此处的所有内容都匹配)^ 将其反转(此处不匹配的所有内容),然后* 重复它。

如果要更改重写规则,我建议my rewrite analyzer plugin (很快在存储库中,but get the current version via Dropbox), 它可以帮助您调试这些东西。

Rewrite Analyzer screenshot

结束

相关推荐