$ _GET查询字符串的正则表达式

时间:2010-04-16 17:18:26

标签: php regex

我正在尝试为$_GET查询字符串找到正则表达式。

我有一个这样的数组:

private $_regexp = array(
    ':id'    => '[0-9]+',
    ':year'  => '[12][0-9]{3}',
    ':month' => '0[1-9]|1[012]',
    ':day'   => '0[1-9]|[12][0-9]|3[01]',
    ':slug'  => '[a-zA-Z0-9-]+',
    ':query' => '...'
);

我循环抛出它们,看看我是否有匹配的通配符:

if ( array_key_exists($matches[0], $this->_regexp) )
    {
        return '^('.$this->_regexp[$matches[0]].')$';
    }

所有其他正则表达式都在抛出,但我尝试了很多不同的正则表达式来找到:

?anything=anything

无法弄清楚,用hogle搜索但却找不到任何东西。我试过,比如这样的事情:

(\?)(.*)(=)(.*)

但没有结果......

这里有任何regexp专家吗?

/ Tobias

2 个答案:

答案 0 :(得分:1)

虽然我真的不明白这个问题,但你的正则表达式是

\?([^=]+)=([^&]*)
\?         # a literal question mark
(          # group 1
  [^=]+    # anything but a "=", 1-unlimited chars
)          # end group 1
=          # the "="
(          # group 2
  [^&]*    # anything but a "&", 0-unlimited chars
)          # end group 2

你能解释一下实际试图做什么吗?

答案 1 :(得分:0)

怎么样: -

(\?)([^=]+)(=)(.+)