preg_match_all tüm eşleşmeleri alır; preg_match sadece birinci eşleşmeyi...

Ayrıca, deseniniz bana yandan çarklı () geldi. Aşağıdakini deneyebilirsiniz:
$dizi = preg_match('~<a href="([^"]+)"[^>]*>(.+?)<\/a>~is', $veri, $dizi) ? $dizi[1] : 'Adres Alınamadı' ; // Burda değişken olarak tanımlamamızın özel bir anlamı yok. Sadece el alışkanlığım.
echo $dizi;