istenilenleri array'a atabilirsin, ayrıca istenilmeyenleri de array'a atıp eğer eşleşiyorsa continue diyerek pas geçebilirsin

Unutmayın kullandığım düzenli ifade çok sıradan ve basit, daha gelişmişini bulup bu mantıkla yapabilirsin diye düşünüyorum


$metin = "Veritabanından çektiğim düz metnin ve bir link http://abc.com ve başka bir link daha http://www.xyz.com ama sadece abc.com ifadesinin geçtiği url'nin linke dönüşmesi gerekiyor";

$istenilen = array("abc.com");

foreach( $istenilen as $link ) {

$regUrl = "/(http|https|ftp|ftps)\:\/\/".preg_quote($link)."(\/\S*)?/i";

// eşleşiyorsa
if(preg_match($regUrl, $metin, $url)) {
// metni değiştir diyoruz
$metin = preg_replace($regUrl, "".$link."", $metin);
}

}

// test için yazdır
echo $metin;
?>