2011-04-19 10 views
1

私はこの時点でpreg_matchルールがあります:私はimgur.com/a/xxxx#xxxxと一致する避けることができる方法をする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 

のために?

+0

正確に一致させるべきではないものはありますか? '/ a /'? '#xxxx'?どちらも?一緒にまたは単独で? –

+0

はすべて一致する前に/ a/ – greenbandit

+0

文字列に一致するか、別の文字列で検索しようとしていますか?それは元のように見えるだろう... – alex

答えて

2

これはあなたが望むものであるならば、私はわからない:http://imgur.com/a/xxxxxxのように、このURLを使って

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

が一致しません。

PS:あなたがやっていることにもよるが、私は正規表現が不必要に複雑になるかもしれないと思うので、簡単な方法を見つけようとするべきだ。 URLを解析することについて私の答えを見てください:Would a regular expression be best for this problem?

+0

これは、ありがとう、働く。 – greenbandit

0

URLを検出し、parse_url()に渡して、そのパスが含まれている場合に一致からそれらの設定を解除することができます。

おそらく読みやすくなります:)

+0

良いアイデア、私はそれを試してみよう。 ^^ – greenbandit