Фильтр для preg_match_all

rafaello

Новичок
Здравствуйте, уважаемые!
Прошу помочь в таком вопросе. При помощи функции preg_match_all() я вытаскиваю все ссылки из заданного текста. Теперь задача заменить все ссылки как здесь
Но мне надо применить фильтр, то есть заменять не все ссылки, а по выбору. Ну вот что получается
PHP:
add_filter('comment_text', 'hide_external', 99);
add_filter('the_content', 'hide_external', 99);
function hide_external( $text ){
   static $home_url, $home_patt;
   if( ! $home_url ){
       $home_url = home_url();
       $home_patt = str_replace('.', '\.', $home_url);
   }
preg_match_all('/\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i', $text, $matches);
print_r($matches);
$my_domains = array("domain.ru", "site.ru", "tratata.ru");
 return preg_replace('~(<a[^>]+)(href=[\'"])(?=http)(?!'. $home_patt .')~i', '\\1 rel="nofollow" target="_blank" \\2'. $home_url . '/goto?', $text );
}
Вобщем, как заменить ссылки только те, которых нет в массиве $my_domains ?
Заранее спасибо!
 
Сверху