Tom: Linkcheck, funktionstüchtige Version

Beitrag lesen

Hello zusammen,

hier die funktionstüchtige Version:

<?php

#--------------------------------------------------------------------
function phpLinkCheck($url, $r = FALSE)
{
  $url = trim($url);

if (!preg_match("=://=", $url))
  {
    $url = "http://$url";
  }

$url = parse_url($url);

if (strtolower($url["scheme"]) != "http")
  {
    return FALSE;
  }

if (!isset($url["port"])) $url["port"] = 80;
  if (!isset($url["path"])) $url["path"] = "/";

$fp = fsockopen($url["host"], $url["port"], &$errno, &$errstr, 30);

if (!$fp)
  {
    return FALSE;
  }
  else
  {
    $httpRequest = "HEAD ". $url["path"] ." HTTP/1.1\r\n"
                  ."Host: ". $url["host"] ."\r\n"
                  ."Connection: close\r\n\r\n";

fputs($fp, $httpRequest);

$head = "";
    while(!feof($fp)) $head .= fgets($fp, 1024);

fclose($fp);
    preg_match("=^(HTTP/\d+.\d+) (\d{3}) ([^\r\n]*)=", $head, $matches);

$http["Status-Line"] = $matches[0];
    $http["HTTP-Version"] = $matches[1];
    $http["Status-Code"] = $matches[2];
    $http["Reason-Phrase"] = $matches[3];

if ($r) return $http["Status-Code"];

$rclass = array("Informational",
                    "Success",
                    "Redirection",
                    "Client Error",
                    "Server Error");

$http["Response-Class"] = $rclass[$http["Status-Code"][0] - 1];

preg_match_all("=^(.+): ([^\r\n]*)=m", $head, $matches, PREG_SET_ORDER);

foreach($matches as $key => $line)
    {
      $errlist[] = $line;
      $http[$line[1]] = $line[2];
    }

if ($http["Status-Code"][0] == 3)
    {
      $http["Location-Status-Code"] = phpLinkCheck($http["Location"], TRUE);
    }

return $http;
  }
}
#--------------------------------------------------------------------

$var = phpLinkCheck("http://forum.de.selfhtml.org/",false);

print "Status-Code: ".$var["Status-Code"];

echo "<pre>";
print_r($var);
echo "</pre>";

?>

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen