任务:根据输入的域名 统计以下三个数据,第一:全球排名;第二:用户量(月平均值);第三:
人均页面访问量(月平均值)。
思路:使用get_file_contents提取出网页内容,再根据正则表达式进行内容的筛选。
核心函数如下:
<?php
/*
the function of getting aleax data
@param string partten ;the url set
@return array partten ;
*/
function get_alexa_data($url)
{
$a_url = explode(PHP_EOL,$url);
$index = count($a_url);
if(function_exists('file_get_contents'))
{
$result = array();
$pattern = "|<div//sclass=/"data[^/"]+?/">[^>]*?>[^>]*?([//d,]+)//s*?</div>[//S//s]*?id=/"reach[//S//s]*?<th>1".
"//smonth[//S//s]*?class=/"avg.*?([//d//.]+)</td[//S//s]*?id=/"pageviews_per_user/"[//S//s]*?".
"1//smonth[//S//s]*?class=/"avg.*?([//d//.]+)</td|";
for($i = 0; $i < $index; $i++)
{
if(!empty($a_url[$i]))
{
$content = file_get_contents('http://www.alexa.com/siteinfo/'.$a_url[$i]);
if(!preg_match($pattern,$content,$result[$a_url[$i]]))
$result[$a_url[$i]]=array('Not Found','Not Found','Not Found','Not Found');
}
}
}
else
die("the function file_get_contents not found!");
return $result;
}
?>
改变上面的正则表达式,可以满足自己的另外要求。
上面函数使用的前置条件是:alexa提供的查询网址格式'http://www.alexa.com/siteinfo/‘不变。
使用例程:
<table>
<tr>
<td>site</td><td>全球排名</td><td>用户量(月平均值)</td><td>人均页面访问量(月平均值)</td>
</tr>
<?php
$alexa = get_alexa_data($_POST['url']);
foreach($alexa as $site => $item)
{
echo "<tr><td>$site</td><td>$item[1]</td><td>$item[2]</td><td>$item[3]</td></tr>";
}
?>
</table>