最近在做一个小项目,其中有一个功能需要检测对方网站有没有做上本站的友情链接,实现思路就是先获取对方网站的内容字符串,然后使用正则匹配字符串内容中有无对方做的本站链接。
具体实现方法见如下代码:
/**
* 检查对方链接情况
*/
public function checkurl(){
if(!is_post()){
json(['error' => 2,'msg'=>'非法操作']);
}
$params=$_POST;
$url=isset($params['checkurl'])?$params['checkurl']:false;
if($url==false){
json(['error' => 2,'msg'=>'请提交url参数']);
}
//根据url获取站点信息
$website=M()->table("website")->field("id")->where("url='$url'")->first();
if(!$website){
json(['error' => 2,'msg'=>'未获取到站点信息']);
}
$str=file_get_contents($url);
$appUrlPreg="/<a.*?href=[\"']?(http[s]?:\/\/link\.xityun\.com[\/]?)[\"']?\s.*?>(.*?)<\/a>/i";
preg_match($appUrlPreg, $str,$match);
if($match){
//将链接状态更新一下
$update=M()->table("website")->where("id=".$website['id'])->update("checkurl=1");
if(!$update){
return json([
'error'=>2,
'msg'=>"已链接,但链接状态更新失败",
]);
}
return json([
'error'=>0,
'data'=>$match,
]);
}else{
//将链接状态更新一下
$update=M()->table("website")->where("id=".$website['id'])->update("checkurl=2");
return json([
'error'=>1,
'msg'=>"对方未链接",
]);
}
}
以上代码只是实现的思路,具体的一些代码如果您需要实现请根据自己的要求进行更新优化。