2011-02-03 123 views
0
/any_string/any_string/any_number 

与此正则表达式:问题用正则表达式PHP的

/(\w+).(\w+).(\d+)/ 

它的工作原理,但我需要这个网址:

/specific_string/any_string/any_string/any_number 

而且我不知道如何得到它。谢谢。

+0

你是什​​么意思*我需要这个网址*?您的表情与第二个网址不符?顺便说一句。你的表达应该包括`/`而不是*任何字符。通过改变分隔符:`〜(\ w +)/(\ w +)/(\ d +)〜`。还要注意`\ w +`不匹配*任何字符串*,而是*任何单词字符串*。 – 2011-02-03 17:54:02

回答

1

/(specific_string).(\w+).(\w+).(\d+)/

但要注意的是,.在你的正则表达式技术上匹配任何性格和 不仅仅是/

/(specific_string)\/(\w+)\/(\w+)\/(\d+)/

这将只匹配斜杠。

0

这一个将匹配第二网址:

"/(\w+)\/(\w+)\/(\w+)\/(\d+)/" 
0
/\/specific_string\/(\w+).(\w+).(\d+)/ 
0

只需插入specific_string在正规表达式:

/specific_string\/(\w+)/(\w+)/\d+)/ 
0

与改变,以避免外来逃逸外分隔符的另一个变种:

preg_match("#/FIXED_STRING/(\w+)/(\w+)/(\d+)#", $_SERVER["REQUEST_URI"], 
0

我会用这样的:

"/\/specific_string\/([^\/]+)\/([^\/]+)\/(\d+)/" 

我使用[^\/]+,因为它会匹配任何不是sl的东西灰。 \w+几乎可以一直工作,但如果某处出现意外字符,这也可以工作。另外请注意,我的正则表达式需要前导斜杠。

如果你想获得更复杂些,下面的正则表达式将匹配您提供的图案

"/^(?:\/specific_string)*\/([^\/]+)\/([^\/]+)\/(\d+)$/" 

这将匹配:

"/any_string/any_string/any_number" 
"/specific_string/any_string/any_string/any_number" 

却会不是匹配

"/some_other_string/any_string/any_string/any_number"