<?
echo get_alexa("www.qq.com");
function get_alexa($website){
$url="http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680x1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=".$website;
$contents=file_get_contents($url);
$contents=str_replace('&lt;a href="/','&lt;a href="http://www.alexa.com/',$contents);
$contents = iconv("UTF-8","gbk//TRANSLIT",$contents);preg_match_all("/&lt;POPULARITY URL=\"(.*?)\" TEXT=\"(.*?)\"\/&gt;/is",$contents,$num);
 if($num[1][0]==""){
  preg_match_all("/&lt;div class=\"data down\"&gt;(.*?)&lt;\/a&gt;&lt;\/div&gt;/is",$contents,$num);
 }
 Return number_format($num[2][0]);}
?> 
以上代码是获得www.QQ.com的alexa排名,应该是9.可是这样写却得不到9的结果,错在哪里呢?可以直接访问如下连接看到xml格式的内容:http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680x1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=www.QQ.com

解决方案 »

  1.   


    echo get_alexa("www.qq.com");
    function get_alexa($website){
    $url="http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680x1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=".$website;
    $contents=file_get_contents($url);
    $contents=str_replace('&lt;a href="/','&lt;a href="http://www.alexa.com/',$contents);
    $contents = iconv("UTF-8","gbk//TRANSLIT",$contents);
    //echo $contents;
    preg_match_all('|POPULARITY URL=".*?" TEXT="(\d+)"|is',$contents,$num);
    print_r($num[1]);//9
     if($num[1][0]==""){
      preg_match_all("/&lt;div class=\"data down\"&gt;(.*?)&lt;\/a&gt;&lt;\/div&gt;/is",$contents,$num);
     }
     Return number_format($num[2][0]);}
      

  2.   

    echo get_alexa("www.qq.com");
    function get_alexa($website){
    $url="http://data.alexa.com/data/+wQ411en8000lA?cli=10&amp;dat=snba&amp;ver=7.0&amp;cdt=alx_vw=20&amp;wid=12206&amp;act=00000000000&amp;ss=1680x1050&amp;bw=964&amp;t=0&amp;ttl=35371&amp;vis=1&amp;rq=4&amp;url=".$website;
    $contents=file_get_contents($url);
    $contents=str_replace('&lt;a href="/','&lt;a href="http://www.alexa.com/',$contents);
    $contents = iconv("UTF-8","gbk//TRANSLIT",$contents);
    //echo $contents;
    preg_match_all('|POPULARITY URL=".*?" TEXT="(\d+)"|is',$contents,$num);
    print_r($num[1]);//9
     if($num[1][0]==""){
      preg_match_all("/&lt;div class=\"data down\"&gt;(.*?)&lt;\/a&gt;&lt;\/div&gt;/is",$contents,$num);
     }
     Return number_format($num[2][0]);}
      

  3.   

    preg_match_all("/&lt;POPULARITY URL=\"(.*?)\" TEXT=\"(.*?)\"\/&gt;/is",$contents,$num);
    返回是原始的xml格式,为啥要用html entity去匹配
    &lt;转回为<
    &gt;转回为>