Merhabalar efendim.
Uzun bir aradan sonra yeniden merhaba. Bloğa girdi girmemenin sebebi malum işler vs nedeni ile pek uğrayamaz olduk. Bu yazımda aslında öyle çok da konuşacak ve bir şey anlatacak değilim. Daha önceden yapmış olduğum python ile web site bilgilerinin alınması konulu başlıktaki web sitenin genel bilgilerini alan php betiğini paylaşmak istedim.

Betik fonksiyonlardan oluşmakta her ne hikmetse class halinde yazmamışım. Aslında bunu paylaşmamdaki bir diğer husus ise bazı arkadaşların bunu rica etmeleri oldu. Bende şuan müsaitken paylaşayım dedim. Betiğin çalışması için SimpleXMLElement kütüphanesinin yüklü olması gerekmektedir.

< ?php
/**
 *  Betik Yazarı: Yusuf KOÇ ( Raiden )
 *  http://www.ysfkc.com
 *
 *  Copyright 2009 ysfkc.com
 *  Licensed under the GNU General Public License, version 2.
 *  See the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
 *
 **/
 
# Read Site
# @access private
# -------------
function getData($site)
{
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL, $site);
        curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0.3) Gecko/2008092818 Pardus/2008 Firefox/3.0.4');
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        $return = curl_exec($ch);
        curl_exec($ch);
 
        return $return;
}
 
# Google PageRank
# @access private
# ---------------------
function _StrToNum($Str, $Check, $Magic)
{
        $Int32Unit = 4294967296;  // 2^32
        $length = strlen($Str);
        for ($i = 0; $i < $length; $i++) {
            $Check *= $Magic;     
            //If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31), 
            //  the result of converting to integer is undefined
            //  refer to http://www.php.net/manual/en/language.types.integer.php
            if ($Check >= $Int32Unit) {
                $Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
                //if the check less than -2^31
                $Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
            }
            $Check += ord($Str{$i}); 
        }
        return $Check;
}
 
# Google PageRank
# @access private
# ---------------------
function _HashURL($String)
{
        $Check1 = _StrToNum($String, 0x1505, 0x21);
        $Check2 = _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);
}
 
# Google PageRank
# @access private
# ---------------------
function _CheckHash($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;
}
 
# Google PageRank
# @access private
# --------------------
function _googlePr($site)
{
        $hash = _CheckHash(_HashURL($site));
        $url = "http://toolbarqueries.google.com/search?client=navclient-auto&hl=en&ch=".$hash."&ie=UTF-8&oe=UTF-8&features=Rank&q=info:".$site;
        $return = getData($url);
        echo preg_replace('/Rank_1:.:/','',$return);
}
 
# Google Backlink
# @access private
# --------------------
function _googleBacklink($site)
{
        $url = "http://www.google.com.tr/search?hl=tr&q=link:".$site;
        $return =  getData($url);
        preg_match("#.*?<b>(\d*)< \/b>#sim",$return,$result);
        if ($result[1] == null)
        {
                echo 'Yok';
        }
        else
        {
                echo $result[1];
        }
}
 
# Google Index
# @access private
# ------------------
function _googleIndex($site)
{
        $url = "http://www.google.com.tr/search?hl=tr&q=site:".$site;
        $return =  getData($url);
        preg_match("#.*?(yakla.*?</b><b>(.*?)< \/b>|aramas.*?</b><b>(.*?)< \/b>).*?#",$return,$result);
        echo $result[3];
}
 
# Dmoz Result
# @access private
# --------------------
function _dmoz($site)
{
        $url = 'http://search.dmoz.org/cgi-bin/search?search='.str_replace('http://www.','',$site);
        $return = getData($url);
        preg_match("#.*?<center>(.*).*<b>.*?#",$return,$result);
        if (rtrim($result[1]) == 'No')
        {
                echo 'Yok';
        }
        else
        {
                echo 'Var';
        }
}
 
# Alexa Rank
# @access private
# -----------------------
function _alexa($url)
{
        $url = 'http://data.alexa.com/data?cli=10&dat=snbamz&url='.str_replace('http://','',$url);
        $alexa = new SimpleXMLElement($url,NULL,TRUE);
        echo number_format($alexa->SD->POPULARITY['TEXT']);
}
 
# Genel Fonksiyon
# @access public
# ------------------
function sonucAl($istek,$url)
{
        switch ($istek)
        {
                case 'googleP': _googlePr($url); break;
                case 'googleB': _googleBacklink($url); break;
                case 'googleI': _googleIndex($url); break;
                case 'alexa': _alexa($url); break;
                case 'dmoz': _dmoz($url); break;
        }
}
?>
</b></center></b>

Betiğimizde sizin kullanacağınız tek fonksiyon sonucAl() olacaktır. Çünkü diğerleri sonucAl() içinden çağrılmaktadır. Sonuc Fonksiyonumuz ise beş farklı parametre almaktadır.

Bunlar;

  • googleP: Google pagerank değeri öğrenilmek istendiğinde kullanılır
  • googleB: Google backlink değeri öğrenilmek istendiğinde kullanılır
  • googleI: Google index değeri öğrenilmek istendiğinde kullanılır
  • alexa: Alexa rank değeri öğrenilmek istendiğinde kullanılır
  • dmoz: Dmoz kaydı öğrenilmek istendiğinde kullanılır

Şimdi bir örnekle sonlandıralım.

< ?php
# Fonksiyon dosyamızı çağırıyoruz
include_once('functions.php');
 
# Sonuc Fonksiyonumuzu çağırıyoruz.
sonucAl('googleP','http://www.ysfkc.com');
?>

Örneğimizi buradan indirebilirsiniz.