preg_match问题

时间:2011-04-19 00:04:51

标签: php regex preg-match

我有这个preg_match规则:

preg_match( '#(http:\/\/(www.)?imgur.com)\/(gallery\/)?(([-|~_0-9A-Za-z]+)&?.*?)#i', $link, $matches )

此匹配

http://imgur.com/xxxx
http://www.imgur.com/xxxx
http://imgur.com/gallery/xxxx

我怎样才能避免与imgur.com/a/xxxx#xxxx匹配?

2 个答案:

答案 0 :(得分:2)

我不确定这是不是你想要的:

preg_match( '#(http:\/\/(www.)?imgur.com)\/(?!a)(gallery\/)?(([-|~_0-9A-Za-z]+)&?.*?)#i', $link, $matches )

此类网址http://imgur.com/a/xxxxxx将不匹配。

PS:虽然取决于你在做什么,我认为正则表达式可能会变得不必要地复杂,你应该尝试找到更简单的方法。请查看我在解析网址时的答案:Would a regular expression be best for this problem?

答案 1 :(得分:0)

您可以检测到这些网址,然后将其传递给parse_url(),如果它们包含该路径,您可以将其从匹配项中取消设置。

可能更容易阅读:)