[英]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.