我有这个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
匹配?
答案 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()
,如果它们包含该路径,您可以将其从匹配项中取消设置。
可能更容易阅读:)