簡體   English   中英

僅在域存在時將鏈接轉換為錨

[英]Convert link to anchor only if domain exists

我的網站上有一個鏈接檢測功能,它將用戶輸入的鏈接轉換為錨點,但是我想限制不存在的廢話鏈接的轉換,因此我建立了以下鏈接

public function tLink($s){
    $domain = preg_replace('/(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/i', '\4', $s);
    getmxrr($domain,$result);
    if(!empty($result)){
        return preg_replace('/(http|ftp)+(s)?:(\/\/)((\w|\.)+)(\/)?(\S+)?/i', '<a href="\0" title="\0">\4</a>', $s);
    }
    return $s;
}

但這使我的頁面加載速度非常慢,加載時間從2到5秒不等。 (他們過去經常立即加載)。 我可以使用更好的方法嗎?

您可以緩存getmxrr的輸出,以確保對已驗證的域不執行相同的操作。

假設您已經配置並安裝了內存緩存。 您可以使用此功能替換查找

function domain_found($domain) { 
$memcache_obj = new Memcache;
$memcache_obj->connect('localhost', 11211);
$var = $memcache_obj->get($domain);
if ($var == "found") return true;
if ($var == "notfound") return false;

    getmxrr($domain,$result); 
    if (empty($result)) {
      $memcache_obj->put($domain, 'notfound');
      return false;
    } else {
      $memcache_obj->put($domain, 'found');
      return true;
    }   
}

當然,您可以根據需要在類中進行此操作,並優化其他值元素。 這用作概念證明代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM