php实现专业获取网站SEO信息类实例
本文实例讲述了php实现专业获取网站SEO信息类。分享给大家供大家参考。具体如下:
这个seo类的功能包括:
-检查指定的网站响应
-获取从该网站主页的语言和其他meta标签数据的
-获取网站的导入链接,从Alexa的流量排名
-获取网站的导入链接,由谷歌索引的网页数量
-获取网站的信任,从WOT排名。
-获取,因为它是第一个注册的网站域名年龄
-获取的Twitter网站页面的数量
-获取的Facebook链接的网站页面
-获取网站谷歌网页速度等级
-获取网站的谷歌网页排名
<?php
/**
*
*SEOreportfordifferentmetrics
*
*@categorySEO
*@authorChema<chema@garridodiaz.com>
*@copyright(c)2009-2012OpenClassifiedsTeam
*@licenseGPLv3
*Basedonseoreportscripthttp://www.phpeasycode.com&&PHPclassSEOstats
*
*/
classseoreport{
/**
*
*checkifaurlisonline/alive
*@paramstring$url
*@returnbool
*/
publicstaticfunctionis_alive($url)
{
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_BINARYTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADERFUNCTION,'curlHeaderCallback');
curl_setopt($ch,CURLOPT_FAILONERROR,1);
curl_exec($ch);
$int_return_code=curl_getinfo($ch,CURLINFO_HTTP_CODE);
curl_close($ch);
if($int_return_code!=200&&$int_return_code!=302&&$int_return_code!=304)
{
returnFALSE;
}
elsereturnTRUE;
}
/**
*HTTPGETrequestwithcurl.
*
*@paramstring$urlString,containingtheURLtocurl.
*@returnstringReturnsstring,containingthecurlresult.
*
*/
protectedstaticfunctionget_html($url)
{
$ch=curl_init($url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_MAXREDIRS,2);
if(strtolower(parse_url($url,PHP_URL_SCHEME))=='https')
{
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,1);
}
$str=curl_exec($ch);
curl_close($ch);
return($str)?$str:FALSE;
}
/**
*
*getthedomainfromanyURL
*@paramstring$url
*/
publicstaticfunctiondomain_name($url)
{
$nowww=ereg_replace('www\.','',$url);
$domain=parse_url($nowww);
if(!empty($domain["host"]))
return$domain["host"];
else
return$domain["path"];
}
/**
*
*getthemetasfromaurlandthelanguageofthesite
*@paramstring$url
*@returnarray
*/
publicstaticfunctionmeta_info($url)
{
//doesn'tworkatmediatemple
/*$html=newDOMDocument();
if(!$html->loadHtmlFile($url))
returnFALSE;*/
if(!$html_content=self::get_html($url))
returnFALSE;
$html=newDOMDocument();
$html->loadHtml($html_content);
$xpath=newDOMXPath($html);
$url_info=array();
$langs=$xpath->query('//html');
foreach($langsas$lang)
{
$url_info['language']=$lang->getAttribute('lang');
}
$metas=$xpath->query('//meta');
foreach($metasas$meta)
{
if($meta->getAttribute('name'))
{
$url_info[$meta->getAttribute('name')]=$meta->getAttribute('content');
}
}
return$url_info;
}
/**
*
*Alexarank
*@paramstring$url
*@returninteger
*/
publicstaticfunctionalexa_rank($url)
{
$domain=self::domain_name($url);
$request="http://data.alexa.com/data?cli=10&dat=s&url=".$domain;
$data=self::get_html($request);
preg_match('/<POPULARITYURL="(.*?)"TEXT="([\d]+)"\/>/si',$data,$p);
return($l[2])?$l[2]:NULL;
}
/**
*
*Alexainboundslink
*@paramstring$url
*@returninteger
*/
publicstaticfunctionalexa_links($url)
{
$domain=self::domain_name($url);
$request="http://data.alexa.com/data?cli=10&dat=s&url=".$domain;
$data=self::get_html($request);
preg_match('/<LINKSINNUM="([\d]+)"\/>/si',$data,$l);
return($l[1])?$l[1]:NULL;
}
/**
*ReturnstotalamountofresultsforanyGooglesearch,
*requestingthedeprecatedWebsearchAPI.
*
*@paramstring$queryString,containingthesearchquery.
*@returnintegerReturnsatotalcount.
*/
publicstaticfunctiongoogle_pages($url)
{
//$query=self::domain_name($url);
$url='http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=1&q='.$url;
$str=self::get_html($url);
$data=json_decode($str);
return(!isset($data->responseData->cursor->estimatedResultCount))
?'0'
:intval($data->responseData->cursor->estimatedResultCount);
}
/**
*
*getstheinboundslinksfromasite
*@paramstring$url
*@paraminteger
*/
publicstaticfunctiongoogle_links($url)
{
$request="http://www.google.com/search?q=".urlencode("link:".$url)."&hl=en";
$data=self::get_html($request);
preg_match('/<divid=resultStats>(About)?([\d,]+)result/si',$data,$l);
return($l[2])?$l[2]:NULL;
}
/**
*
*weboftrustrating
*@paramstring$url
*@reutninteger
*/
publicstaticfunctionWOT_rating($url)
{
$domain=self::domain_name($url);
$request="http://api.mywot.com/0.4/public_query2?target=".$domain;
$data=self::get_html($request);
preg_match_all('/<applicationname="(\d+)"r="(\d+)"c="(\d+)"\/>/si',$data,$regs);
$trustworthiness=($regs[2][0])?$regs[2][0]:NULL;
return(is_numeric($trustworthiness))?$trustworthiness:NULL;
}
/**
*
*howoldisthedomain?
*@paramstring$domain
*@returnintegerunixtime
*/
publicstaticfunctiondomain_age($domain)
{
$request="http://reports.internic.net/cgi/whois?whois_nic=".$domain."&type=domain";
$data=self::get_html($request);
preg_match('/CreationDate:([a-z0-9-]+)/si',$data,$p);
return(!$p[1])?FALSE:strtotime($p[1]);
}
/**
*
*countshowmanytweetsabouttheurl
*@paramstring$url
*@returninteger
*/
publicstaticfunctiontweet_count($url)
{
$url=urlencode($url);
$twitterEndpoint="http://urls.api.twitter.com/1/urls/count.json?url=%s";
$fileData=file_get_contents(sprintf($twitterEndpoint,$url));
$json=json_decode($fileData,true);
unset($fileData);//freememory
return(is_numeric($json['count']))?$json['count']:NULL;
}
/**
*ReturnsthetotalamountofFacebookSharesforasinglepage
*
*@linkhttps://graph.facebook.com/
*@paramstringTheURLtocheck.
*@returnintegerReturnsthetotalamountofFacebook
*/
publicstaticfunctionfacebook_shares($q)
{
//ExecutionandresultofJson
$str=self::get_html('http://graph.facebook.com/?id='.urlencode($q));
$data=json_decode($str);
//Returnonlynumberoffacebookshares
$r=$data->shares;
return($r!=NULL)?$r:intval('0');
}
/**
*
*getthepagespeedrankover100
*@paramstring$url
*@returninteger
*/
publicstaticfunctionpage_speed($url)
{
$url='https://developers.google.com/_apps/pagespeed/run_pagespeed?url='.$url.'&format=json';
$str=self::get_html($url);
$data=json_decode($str);
returnintval($data->results->score);
}
/**
*
*getgooglepagerank
*@paramstring$url
*@returninteger
*/
publicstaticfunctionpage_rank($url)
{
$query="http://toolbarqueries.google.com/tbr?client=navclient-auto&ch=".self::CheckHash(self::HashURL($url))."&features=Rank&q=info:".$url."&num=100&filter=0";
$data=self::get_html($query);//die(print_r($data));
$pos=strpos($data,"Rank_");
if($pos===false)
{
returnNULL;
}
else
{
$pagerank=substr($data,$pos+9);
return$pagerank;
}
}
//functionsforgooglepagerank
/**
*TocalculatePRfunctions
*/
publicstaticfunctionStrToNum($Str,$Check,$Magic)
{
$Int32Unit=4294967296;//2^32
$length=strlen($Str);
for($i=0;$i<$length;$i++){
$Check*=$Magic;
//Ifthefloatisbeyondtheboundariesofinteger(usually+/-2.15e+9=2^31),
//theresultofconvertingtointegerisundefined
//refertohttp://www.php.net/manual/en/language.types.integer.php
if($Check>=$Int32Unit){
$Check=($Check-$Int32Unit*(int)($Check/$Int32Unit));
//ifthechecklessthan-2^31
$Check=($Check<-2147483648)?($Check+$Int32Unit):$Check;
}
$Check+=ord($Str{$i});
}
return$Check;
}
/**
*Genearateahashforaurl
*/
publicstaticfunctionHashURL($String)
{
$Check1=self::StrToNum($String,0x1505,0x21);
$Check2=self::StrToNum($String,0,0x1003F);
$Check1>>=2;
$Check1=(($Check1>>4)&0x3FFFFC0)|($Check1&0x3F);
$Check1=(($Check1>>4)&0x3FFC00)|($Check1&0x3FF);
$Check1=(($Check1>>4)&0x3C000)|($Check1&0x3FFF);
$T1=(((($Check1&0x3C0)<<4)|($Check1&0x3C))<<2)|($Check2&0xF0F);
$T2=(((($Check1&0xFFFFC000)<<4)|($Check1&0x3C00))<<0xA)|($Check2&0xF0F0000);
return($T1|$T2);
}
/**
*genearateachecksumforthehashstring
*/
publicstaticfunctionCheckHash($Hashnum)
{
$CheckByte=0;
$Flag=0;
$HashStr=sprintf('%u',$Hashnum);
$length=strlen($HashStr);
for($i=$length-1;$i>=0;$i--){
$Re=$HashStr{$i};
if(1===($Flag%2)){
$Re+=$Re;
$Re=(int)($Re/10)+($Re%10);
}
$CheckByte+=$Re;
$Flag++;
}
$CheckByte%=10;
if(0!==$CheckByte){
$CheckByte=10-$CheckByte;
if(1===($Flag%2)){
if(1===($CheckByte%2)){
$CheckByte+=9;
}
$CheckByte>>=1;
}
}
return'7'.$CheckByte.$HashStr;
}
}
使用范例
<?php
include'seoreport.php';
ini_set('max_execution_time',180);
$url=(isset($_GET['url']))?$_GET['url']:'http://phpclasses.org';
$meta_tags=seoreport::meta_info($url);
//die(var_dump($meta_tags));
//firstcheckifsiteonline
if($meta_tags!==FALSE)
{
$stats=array();
$stats['meta']=$meta_tags;
$stats['alexa']['rank']=seoreport::alexa_rank($url);
$stats['alexa']['links']=seoreport::alexa_links($url);
$stats['domain']['WOT_rating']=seoreport::WOT_rating($url);
$stats['domain']['domain_age']=seoreport::domain_age($url);
$stats['social']['twitter']=seoreport::tweet_count($url);
$stats['social']['facebook']=seoreport::facebook_shares($url);
$stats['google']['page_rank']=seoreport::page_rank($url);
$stats['google']['page_speed']=seoreport::page_speed($url);
$stats['google']['pages']=seoreport::google_pages($url);
$stats['google']['links']=seoreport::google_links($url);
var_dump($stats);
}
else'Sitenotonline.'.$url;
希望本文所述对大家的php程序设计有所帮助。