Check PageRank with PHP?

Discussion in 'PHP' started by Christian Little, Feb 25, 2008.

  1. #1
    Can somebody point me in the right direction here?

    I want to use PHP to check the PR of a webpage.

    So if I have something like this:

    $PR = checkPageRank("http://www.example.com");

    checkPageRank() will return the PR as an int.

    But I don't know what code to put in the function definition.
     
    Christian Little, Feb 25, 2008 IP
  2. Dwaighty

    Dwaighty Peon

    Messages:
    358
    Likes Received:
    10
    Best Answers:
    0
    Trophy Points:
    0
    #2
    I needed this done also a while ago and I modified a php class I found, don't remember where I found it though.

    Make a php file (ex: pagerank.php) with this class in it:

    
    <?php
    
        class pagerank {
    
            var $url;
    
            function pagerank ($url) {
                set_time_limit(0);
                $this->url = parse_url('http://' . ereg_replace('^http://', '', $url));
                $this->url['full'] = 'http://' . ereg_replace('^http://', '', $url);
            }
    
            function getPage ($url) {
                if (function_exists('curl_init')) {
                    $ch = curl_init($url);
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                    @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
                    curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/search?hl=en&q=google&btnG=Google+Search');
                    return curl_exec($ch);
                } else {
                    return file_get_contents($url);
                }
            }
    
            function getPagerank () {
                $url = 'info:' . $this->url['host'];
                $checksum = $this->checksum($this->strord($url));
                $url = "http://www.google.com/search?client=navclient-auto&ch=6$checksum&features=Rank&q=$url";
                $data = $this->getPage($url);
                preg_match('#Rank_[0-9]:[0-9]:([0-9]+){1,}#si', $data, $p);
                $value = ($p[1]) ? $p[1] : 0;
                return $value;
            }
    
            function toInt ($string) {
                return preg_replace('#[^0-9]#si', '', $string);
            }
    
            function to_int_32 (&$x) {
                $z = hexdec(80000000);
                $y = (int) $x;
                if($y ==- $z && $x <- $z){
                    $y = (int) ((-1) * $x);
                    $y = (-1) * $y;
                }
                $x = $y;
            }
    
            function zero_fill ($a, $b) {
                $z = hexdec(80000000);
                if ($z & $a) {
                    $a = ($a >> 1);
                    $a &= (~$z);
                    $a |= 0x40000000;
                    $a = ($a >> ($b - 1));
                } else {
                    $a = ($a >> $b);
                }
                return $a;
            }
    
            function mix ($a, $b, $c) {
                $a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c, 13)));
                $b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a << 8));
                $c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b, 13)));
                $a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c, 12)));
                $b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a << 16));
                $c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b, 5)));
                $a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c, 3)));
                $b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a << 10));
                $c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b, 15)));
                return array($a,$b,$c);
            }
    
            function checksum ($url, $length = null, $init = 0xE6359A60) {
                if (is_null($length)) {
                    $length = sizeof($url);
                }
                $a = $b = 0x9E3779B9;
                $c = $init;
                $k = 0;
                $len = $length;
                while($len >= 12) {
                    $a += ($url[$k + 0] + ($url[$k + 1] << 8) + ($url[$k + 2] << 16) + ($url[$k +3] << 24));
                    $b += ($url[$k + 4] + ($url[$k + 5] << 8) + ($url[$k + 6] << 16) + ($url[$k +7] << 24));
                    $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k +11] << 24));
                    $mix = $this->mix($a, $b, $c);
                    $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
                    $k += 12;
                    $len -= 12;
                }
                $c += $length;
                switch($len) {
                    case 11: $c += ($url[$k + 10] << 24);
                    case 10: $c += ($url[$k + 9] << 16);
                    case 9 : $c += ($url[$k + 8] << 8);
                    case 8 : $b += ($url[$k + 7] << 24);
                    case 7 : $b += ($url[$k + 6] << 16);
                    case 6 : $b += ($url[$k + 5] << 8);
                    case 5 : $b += ($url[$k + 4]);
                    case 4 : $a += ($url[$k + 3] << 24);
                    case 3 : $a += ($url[$k + 2] << 16);
                    case 2 : $a += ($url[$k + 1] << 8);
                    case 1 : $a += ($url[$k + 0]);
                }
                $mix = $this->mix($a, $b, $c);
                return $mix[2];
            }
    
            function strord ($string) {
                for($i = 0; $i < strlen($string); $i++) {
                    $result[$i] = ord($string{$i});
                }
                return $result;
            }
    
        }
    ?>
    
    
    Code (markup):
    and then an index.php where you will ask for the url:

    
    <?php
    include("include/pagerank.php");
    $url="";
    $pr="";
    if (isset($_GET["txtURL"])){
    $url= $_GET["txtURL"];
    $data=new pagerank($url);
    $pr=$data->getPagerank();
    }
    
    
    ?>
    <html>
    <head>
    <title>Find out your pagerank!</title>
    </head>
    <body>
    <p aling="center"><font size = "8px">Google PageRank</font></p>
    <br>
    <br>
    <?php
    if ($url != ""){
    echo "<span style='color:red;'>$url has a PageRank of $pr</span> <br/><br/>";
    
    }
    ?>
    <form name="frm" method="get" action="index.php">
            <input type="text" name="txtURL" size="70" value="http://"><br/>
            <span style='color:grey;'>(ex: http://www.websitename.com)</span><br/><br/><br/>
            <input type="submit" value="Go!">
            
    </form>
    </body>
    </html>
    
    Code (markup):
    Hope this helps, good luck.
     
    Dwaighty, Feb 25, 2008 IP
    Christian Little likes this.
  3. proxywhereabouts

    proxywhereabouts Notable Member

    Messages:
    4,027
    Likes Received:
    110
    Best Answers:
    0
    Trophy Points:
    200
    #3
    proxywhereabouts, Feb 25, 2008 IP
  4. Christian Little

    Christian Little Peon

    Messages:
    1,753
    Likes Received:
    80
    Best Answers:
    0
    Trophy Points:
    0
    #4
    That code does exactly what I wanted, thanks very much :)
     
    Christian Little, Feb 29, 2008 IP
  5. swishman

    swishman Well-Known Member

    Messages:
    1,264
    Likes Received:
    28
    Best Answers:
    0
    Trophy Points:
    140
    #5
    nice methode..
     
    swishman, Feb 29, 2008 IP
  6. hotouch

    hotouch Guest

    Messages:
    39
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #6
    please send me modify version to check pr and take url from excell file and then place the pr in those file thanks
     
    hotouch, Mar 1, 2008 IP
  7. Dwaighty

    Dwaighty Peon

    Messages:
    358
    Likes Received:
    10
    Best Answers:
    0
    Trophy Points:
    0
    #7
    Sure, it will cost you $10.
     
    Dwaighty, Mar 1, 2008 IP
  8. hotouch

    hotouch Guest

    Messages:
    39
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #8
    i think its not possible for me to do that any ways thanks for ur offer
     
    hotouch, Mar 1, 2008 IP
  9. Barti1987

    Barti1987 Well-Known Member

    Messages:
    2,703
    Likes Received:
    115
    Best Answers:
    0
    Trophy Points:
    185
    #9
    fopen file;

    explode line;

    foreachline{
    checkpagerank link
    }

    Not hard.

    Peace,
     
    Barti1987, Mar 1, 2008 IP
  10. Dwaighty

    Dwaighty Peon

    Messages:
    358
    Likes Received:
    10
    Best Answers:
    0
    Trophy Points:
    0
    #10
    Yeah, not hard at all, but he didn't want it explained, he wanted it done. I happened to have this class and it wasn't a problem to post it and help someone. If he asked me to explain how he could parse a csv and add the pr next to each website, I wouldn't have hesitated to spend 5 minutes and reply, but then again, he asked me to send him the modified, working version: "please send me modify version to check pr and take url from excell file and then place the pr in those file thanks".
     
    Dwaighty, Mar 1, 2008 IP
    mike_eci likes this.
  11. hotouch

    hotouch Guest

    Messages:
    39
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #11
    hey thanks for ur reply but pleas send me full code if its possible for you.

    thanks
     
    hotouch, Mar 2, 2008 IP
  12. hotouch

    hotouch Guest

    Messages:
    39
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #12
    please help me out i need this anixously
     
    hotouch, Mar 8, 2008 IP
  13. fosforito

    fosforito Peon

    Messages:
    234
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #13
    very interesting, thanks!
     
    fosforito, Mar 18, 2008 IP
  14. mytshans

    mytshans Peon

    Messages:
    153
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #14
    nice, this one what I'm looking for. Hope it explained more briefly....:)
     
    mytshans, Mar 18, 2008 IP
  15. ezprint2008

    ezprint2008 Well-Known Member

    Messages:
    611
    Likes Received:
    15
    Best Answers:
    2
    Trophy Points:
    140
    Digital Goods:
    1
    #15
    lol
    Freakishly intense on the PHP script - that wasnt help , that was like excessive programming :)

    ..and whats with all this $5 and $10 stuff for buying mod codes?! :)
    It costs $5 for a friggin hamburger these days.. This coding stuff takes years to learn.

    Codes that long can go for $2,000 if somebody wants them bad enough :)
    obviously they have that stuff free on the internet ..but you can draw a lot of traffic to a 'free check your site PR'

    (puts on barrel ...holds up sign) coding all your ridiculous requests and visions.. for price of hamburger?!

    my two cents .. but give it back, because two cents is a higher percentage of $5.00 as opposed to $2,000
     
    ezprint2008, Mar 18, 2008 IP
  16. jackieshine

    jackieshine Banned

    Messages:
    242
    Likes Received:
    3
    Best Answers:
    0
    Trophy Points:
    0
    #16
    may i have a copy of the code? it is really nice.
     
    jackieshine, Mar 18, 2008 IP
  17. Dwaighty

    Dwaighty Peon

    Messages:
    358
    Likes Received:
    10
    Best Answers:
    0
    Trophy Points:
    0
    #17
    The code is in my first reply. Just follow the instructions. There's nothing more.
     
    Dwaighty, Mar 19, 2008 IP
    matthewrobertbell likes this.
  18. matthewrobertbell

    matthewrobertbell Peon

    Messages:
    781
    Likes Received:
    35
    Best Answers:
    0
    Trophy Points:
    0
    #18
    Very nice code, rep added, just what i was looking for :)
     
    matthewrobertbell, Apr 8, 2008 IP
  19. techstroke

    techstroke Peon

    Messages:
    6
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #19
    thanx for the script buddy , it worked like a charm , for a beginner i would like to add to keep that pagerank.php file inside an include folder in the same dir. as index.php like

    pr( script folder)
    |
    |
    index.php
    |
    |__include
    |
    |
    pagerank.php
     
    techstroke, Aug 9, 2008 IP
  20. Irfi0009

    Irfi0009 Banned

    Messages:
    17,584
    Likes Received:
    33
    Best Answers:
    1
    Trophy Points:
    48
    #20
    Anyone can tell me where to put these lines?

    Thanks,
     
    Irfi0009, Oct 19, 2008 IP