Heim  >  Artikel  >  php教程  >  PHP批量过滤MYSQL数据库内站外链接和图片

PHP批量过滤MYSQL数据库内站外链接和图片

WBOY
WBOYOriginal
2016-06-06 19:43:181048Durchsuche

增加对站点内容外部链接的过滤》。因考虑如果是在前台调用数据时过滤的话,对网页打开速度,服务器能耗都增加许多,所以就采用的是入库时添加。 那么,原来已有的数据怎么办?现在需要对原来的数据也进行此操作,如果是在后台一条条编辑来实现,即使只需要点

增加对站点内容外部链接的过滤》。因考虑如果是在前台调用数据时过滤的话,对网页打开速度,服务器能耗都增加许多,所以就采用的是入库时添加。

那么,原来已有的数据怎么办?现在需要对原来的数据也进行此操作,如果是在后台一条条编辑来实现,即使只需要点一下,工程量也是很大的,那么就需要一个批处理操作。

写一个批处理程序即可,经调试,测试,以下的程序可很好的替换原来数据库里面的外部链接和外部图片

如,站点是http://www.ledaokj.com

一篇文章里有一个链接是 http://www.53sj.net/article-6-1.html

一个图片是 http://www.68idc.cn/help/uploads/allimg/150923/0I201BZ-0.jpg

经过批处理操作后

其代码变成

PHP批量过滤MYSQL数据库内站外链接和图片

 

批量过滤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