那么,原来已有的数据怎么办?现在需要对原来的数据也进行此操作,如果是在后台一条条编辑来实现,即使只需要点一下,工程量也是很大的,那么就需要一个批处理操作。
写一个批处理程序即可,经调试,测试,以下的程序可很好的替换原来数据库里面的外部链接和外部图片
如,站点是http://www.ledaokj.com
一篇文章里有一个链接是 http://www.53sj.net/article-6-1.html
一个图片是 http://img.gxlcms.com//Uploads-s/new/2019-09-29-201929/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数据库内站外链接和图片