正則過濾指定的鏈接

//過濾文章中除指定域名之外的鏈接
    $pre = '|<a[^>]*?\s*href=\\\"http://(?:.*?)\.(.*?)\.(?:.*?)/(?:.*?)\"(?:.*?)>(.*?)<\/a>|i';
	preg_match_all($pre,$body,$a);
	if($a){
		$qian = $a[0];
		$home = $a[1];
		$hou  = $a[2];
		foreach ($home as $key=>$val){
			if($val=='beelink'||$val=='zoosnet'){
				continue;
			}else{
				$body = str_replace($qian[$key],$hou[$key],$body);
			}
		}
	}

將這段代碼加到織夢的文章發佈處理文件article_add.php的$body = AnalyseHtmlBody($body,$description,$litpic,$keywords,’htmltext’);提取摘要之前就可以了。這裏面用到了正則的斷言。來屏蔽了一些不必要的匹配。這個正則匹配出來三部分,第一部分是整個鏈接,第二部分是域名,第三部分是去掉a標籤後的部分。所以我們遍歷第二部分,是指定的可以發佈的域名就結束本次循環,如果不是,就將對應的第一部分替換爲對應的第三部分。替換因爲不是複雜的匹配,所以用php自帶的替換就可以了,正則雖然很方便,但是他比較耗費資源,如果可以,儘量使用php自帶的函數來操作。這樣就可以實現將一些外部鏈接替換掉了!
php個人博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章