2013-03-19 37 views
0

我有一個字符串:PHP的preg_match URL段不工作

https://domain.tld/123456/api/v1/projects/45242457-foo-bar.json 

而且我想匹配 '45242457-FOO吧' 使用:

preg_match('~"/projects/(.*).json"~', $url, $matches, PREG_OFFSET_CAPTURE); 

這使返回零個匹配。爲什麼?

+0

爲什麼你周圍的URL雙引號? – 2013-03-19 17:05:54

+1

周圍的'''是什麼? – Gumbo 2013-03-19 17:05:55

+1

考慮使用'parse_url()'(http://php.net/manual/en/function.parse-url.php)來獲取有關urls的信息。和更好的解決方案比一個正則表達式。 – Cfreak 2013-03-19 17:05:58

回答

2

你需要逃避你的時間(和貪婪*):

~"/projects/(.*?)\.json"~ 
+0

他確實,但那不是問題的原因,原因是貪婪的'*' – DaveRandom 2013-03-19 17:06:09

+0

忽略了這個.Regex相應地修改。 – 2013-03-19 17:07:11

+1

@DaveRandom其實這裏沒問題。問題實際上是雙引號,只是解決了這個問題,雖然我同意'.'應該逃脫,以堅持OP正在嘗試做的事情。 – 2013-03-19 17:08:24