因发现站内很多引用站外文章的链接失效,产生大量的死链接,对于搜索引擎来说是极不友好的,很不利于网站优化,所以站内添加了站外链接过滤功能,对于新加的文章,在添加入库时就自动增加rel="nofollow"标签,见文章《增加对站点内容外部链接的过滤》。因考虑如果是在前台调用数据时过滤的话,对网页打开速度,服务器能耗都增加许多,所以就采用的是入库时添加。
那么,原来已有的数据怎么办?现在需要对原来的数据也进行此操作,如果是在后台一条条编辑来实现,即使只需要点一下,工程量也是很大的,那么就需要一个批处理操作。
写一个批处理程序即可,经调试,测试,以下的程序可很好的替换原来数据库里面的外部链接和外部图片
如,站点是http://www.ledaokj.com
一篇文章里有一个链接是 http://www.53sj.net/article-6-1.html
一个图片是 http://www.53sj.net/data/attachment/block/d3/d34780d1fca3d6b7960a7eb7a2c4c0d3.jpg
经过批处理操作后
其代码变成
批量过滤MYSQL数据库内站外链接和图片程序代码
global $config,$db;$sql = "SELECT `id`,`content` FROM `{$db->prefix}article`"; $a_list = $db->query($sql); $domain = $config['url'];$domain = substr($domain,0,strlen($domain)-1); //修正当前域名网址 foreach($a_list as $a){$content = content_nofollow($a['content'],$domain);update_a($a['id'],addslashes($content));}exit; function update_a($id,$content){global $config,$db; $sql = "update `{$db->prefix}article` SET `content`='{$content}' where `id`={$id}";if($db->execute($sql)){echo $id.'更新成功!
';}} //外部链接增加nofllow $content 内容 $domain 当前网站域名function content_nofollow($content,$domain){ preg_match_all('/href="(.*?)"/',$content,$matches); if($matches){ foreach($matches[1] as $val){ if( strpos($val,$domain)===false ) $content=str_replace('href="'.$val.'"', 'href="'.$val.'" rel="external nofollow" ',$content); } } preg_match_all('/src="http:(.*?)"/',$content,$matches); if($matches){ foreach($matches[1] as $val){ if( strpos($val,$domain)===false ) $content=str_replace('src="http:'.$val.'"', 'src="http:'.$val.'" rel="external nofollow" ',$content); } } return $content;} 原文链接:PHP批量过滤MYSQL数据库内站外链接和图片
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn