欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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

程序员文章站 2022-05-28 17:01:33
...

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

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

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

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

如,站点是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数据库内站外链接和图片