PHP Screenshot URL Handler

分类
代码库
更新时间
2018-02-12 20:47:10

有需要google的接口, 请自行测试可用性.


<?php 
    /** 
     * This package can extract url and grap screenshort form url. 
     * 
     * @author Malik Umer Farooq <lablnet01@gmail.com> 
     * @author-profile https://www.facebook.com/malikumerfarooq01/ 
     * @license MIT 
     * @link https://github.com/Lablnet/PHP-URL 
     */ 
class URL 
{ 
    //set the url 
    private $url; 

    /** 
     * Set the url 
     * @param $url valid url of web 
     * @return void 
     */ 
    public function SetUrl( $url ){ 

        $this->url = $url; 

    } 

    /** 
     * Get the url 
     * @return url 
     */ 
    public function GetUrl(){ 

        return $this->url; 

    } 

    /** 
     * Clean/remove html tags 
     * @param $string 
     * @return string 
     */ 
    public function Clean($str){ 
        return strip_tags($str); 
    } 
    /** 
     * Generating random slugs 
     * @param $length 
     * @return string 
     */ 
    public function Slug($length){ 
        $char = array_merge(range(0,9), range('a''z'),range('A''Z')); 
        $stringlength = count( $char ); //Used Count because its array now 
        
        $randomString = ''; 
        
        for ( $i = 0; $i < $length; $i++ ) { 
            
            $randomString .= $char[rand( 0, $stringlength - 1 )]; 
            
        } 
        
        return $randomString; 
        
    } 
    /** 
     * Get content form url 
     * @param $url valid url of web 
     * @return raw data 
     */ 
    public function FetchUrl( $url ){ 

        return file_get_contents($url); 

    } 
    /** 
     * Fetch title 
     * @return string 
     */ 
    public function FetchTitle(){ 

        $url = $this->FetchUrl($this->GetUrl()); 

        

        if(preg_match_all("/<title>(.+)<\/title>/i", $url, $title)){ 

            return $title; 

        }else{ 

            return "Sorry! No title found"; 

        } 
    } 
    /** 
     * Fetch keywords 
     * @return string 
     */ 
    public function FetchKeywords(){ 

        $tags = get_meta_tags($this->GetUrl()); 

        if(isset($tags['keywords'])){ 

            return $tags['keywords']; 

        }else{ 

            return "Sorry! No Keywords found"; 

        } 

    } 
    /** 
     * Fetch Description 
     * @return string 
     */ 
    public function FetchDescription(){ 

        $url = $this->FetchUrl($this->GetUrl()); 
        
        if(preg_match_all("/<p>(.+)<\/p>/i", $url, $paragraphs)){ 

            return $paragraphs; 

        }else{ 

            return "Sorry! No description found"; 

        } 

    } 
    /** 
     * Fetch images form url 
     * @return string 
     */ 
    public function FetchImages(){ 

        $url = $this->FetchUrl($this->GetUrl()); 

        preg_match_all('/<img[^>]*'.'src=[\"|\'](.*)[\"|\']/Ui', $url, $images); 

        if(isset($images)){ 

            return $images; 

        }else{ 

            return "Sorry! No image found"; 

        } 

    } 
    /** 
     * Capture web screenshort using google api 
     * @return blob 
     */ 
    public function CaptureUrl(){ 
        //getting url 
        $siteURL = $this->GetUrl(); 
        //call Google PageSpeed Insights API 
        $googlepsdata = file_get_contents("https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url={$siteURL}&screenshot=true"); 
            //decode json data 
        $googlepsdata = json_decode($googlepsdata,true); 
        //screenshot data 
        $snap = $googlepsdata['screenshot']['data']; 
        $snap = str_replace(array('_','-'),array('/','+'),$snap); 
        return $snap; 
    } 
    /** 
     * Filters all url from string 
     * @param $url valid url of web 
     * @return array 
     */ 
    public function FilterUrl($url){ 

        if(preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $url, $match)){ 

            return $match; 

        }else{ 

            return false; 

        } 

    } 
    /** 
     * get back all data 
     * @return array 
     */ 
    public function GetData(){ 
        $array = 
        [ 

            'url' => $this->GetUrl(), 

            'slug' => $this->Slug(6), 

            'title' => $this->FetchTitle(), 

            'keywords' => $this->FetchKeywords(), 

            'description' => $this->Clean($this->FetchDescription()), 

            'screenshort' => $this->CaptureUrl(), 

            'images' => $this->FetchImages(), 
            
        ]; 

        return $array; 

    } 
} 

分享工作室[粤ICP备16004795号-2] 腾讯云 / 腾讯AI / 南沙新区 / 信用 0.016