php实现检查对方网站是否做了本站的链接

By | 2020年6月5日

最近在做一个小项目,其中有一个功能需要检测对方网站有没有做上本站的友情链接,实现思路就是先获取对方网站的内容字符串,然后使用正则匹配字符串内容中有无对方做的本站链接。

具体实现方法见如下代码:

/**
     * 检查对方链接情况
     */
    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'=>"对方未链接",
            ]);
        }
    }

以上代码只是实现的思路,具体的一些代码如果您需要实现请根据自己的要求进行更新优化。

发表评论

电子邮件地址不会被公开。 必填项已用*标注