在完全有效的值上使preg_match模式失败

时间:2013-01-29 10:33:23

标签: php regex wordpress

我使用regexpal.com测试我的正则表达式反对Wordpress试图比较的数据并且它失败了,看看这个并告诉我你是否看到了这个问题?

正则表达式

"#^json/(.+?)/?([a-zA-Z0-9]*)?$#"

要匹配的内容

json/trips

这些作品,前一部作品

json/trips/0
json/trips/13
json/fullticket/9805048001130122361809

如果我在regexpal中尝试所有这些,它们都可以工作,但是在wordpress中,只有那个不包含我想要获取的元素的id的那个会失败,其他工作正常。

足够有趣的是,$ match返回:

array
0 => string 'json/trips' (length=10)
1 => string 't' (length=1)
2 => string 'rips' (length=4)

2 个答案:

答案 0 :(得分:1)

请尝试使用此正则表达式:

#^json/([^/]+)/?([a-zA-Z0-9]*)?$#

输出:

Array
(
    [0] => json/trips
    [1] => trips
    [2] => 
)

答案 1 :(得分:0)

调整wordpress重写规则之后的答案最终会变成:

data/([^/]+)(/([a-zA-Z0-9\-]*))?$

注意:我在新场景中将json更改为数据,因此我不会搞乱自定义帖子类型规则