我有一個字符串: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);
這使返回零個匹配。爲什麼?
我有一個字符串: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);
這使返回零個匹配。爲什麼?
你需要逃避你的時間(和貪婪*):
~"/projects/(.*?)\.json"~
他確實,但那不是問題的原因,原因是貪婪的'*' – DaveRandom 2013-03-19 17:06:09
忽略了這個.Regex相應地修改。 – 2013-03-19 17:07:11
@DaveRandom其實這裏沒問題。問題實際上是雙引號,只是解決了這個問題,雖然我同意'.'應該逃脫,以堅持OP正在嘗試做的事情。 – 2013-03-19 17:08:24
爲什麼你周圍的URL雙引號? – 2013-03-19 17:05:54
周圍的'''是什麼? – Gumbo 2013-03-19 17:05:55
考慮使用'parse_url()'(http://php.net/manual/en/function.parse-url.php)來獲取有關urls的信息。和更好的解決方案比一個正則表達式。 – Cfreak 2013-03-19 17:05:58