как настроить отрицательное совпадение с выражением reg, чтобы вытащить все остальные ссылки - PullRequest
1 голос
/ 29 января 2011

Привет. У меня есть следующий HTML-код, и я хочу извлечь все другие ссылки, которые не http://dont-match.co.uk Все URL-адреса, которые должны быть сопоставлены, отличаются друг от друга. отрицательного совпадения, то есть совпадения со всеми, которые не http://dont-match.co.uk

<a href="http://match-this-url.com/">link text</a> some 
text <a href="http://match-this-diff-url.com/">link text</a> more 
text <a href="http://dont-match.co.uk/">link text</a> 
text <a href="http://match-this-different-url.com/">link text</a> 
text <a href="http://dont-match.co.uk/">link text</a>

Вот что у меня есть:

/(<a href="http:\/\/[dont-match.co.uk]\/[^\"]*">([\d\D]*?)<\/a>)/

1 Ответ

4 голосов
/ 29 января 2011

Используйте негативный взгляд (?!expression not to match):

preg_match_all('/(<a href="http:\/\/(?!dont-match\.co\.uk).*?\/[^"]*">(.*?)<\/a>)/', $str, $matches);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...