function json($var) {
switch (gettype($var)) {
case 'boolean':
return $var ? 'true' : 'false'; // Lowercase necessary!
case 'integer':
case 'double':
return $var;
case 'resource':
case 'string':
return '"'. str_replace(array("\r", "\n", "<", ">", "&"),
array('\r', '\n', '\x3c', '\x3e', '\x26'),
addslashes($var)) .'"';
case 'array':
if (empty ($var) || array_keys($var) === range(0, sizeof($var) - 1)) {
$output = array();
foreach ($var as $v) {
$output[] = json($v);
}
return implode(', ', $output);
}
// Otherwise, fall through to convert the array as an object.
case 'object':
$output = array();
foreach ($var as $k => $v) {
$output[] = json(strval($k)) .': '. json($v);
}
return implode(', ', $output) ;
default:
return 'null';
}
}
function unique_urls($urls) {
$uurls = array();
for ($i=0; isset($urls[$i]); $i++) {
if (!in_array($urls[$i], $uurls)) {
$uurls[] = $urls[$i];
}
}
return $uurls;
}
function get_head($url, $timeout = 1) {
$info = @parse_url($url);
$fp = @fsockopen($info["host"], 80, $errno, $errstr, $timeout);
if (!$fp) {
return false;
}
// Checks the path is not empty
if (empty($info["path"])) {
// If it is empty it fills it
$info["path"] = "/";
}
$query = "";
if (isset( $info["query"] ) ) {
$query = "?".$info["query"]."";
}
$out = "HEAD ".$info["path"]."".$query." HTTP/1.0\r\n";
$out .= "Host: ".$info["host"]."\r\n";
$out .= "Connection: close \r\n" ;
$out .= "User-Agent: jQuery_LinkChecker/1.1\r\n\r\n";
// write the headers out
fwrite($fp, $out);
$html = '';
while (!feof($fp) ) {
$html .= fread($fp,8192);
}
//echo $html . '<br><br>';
//flush();
// Closes socket
fclose( $fp );
return $html;
}
// Get status code
function get_status($header) {
$headers = explode( "\r\n", $header );
unset( $header );
if (preg_match("/HTTP\/[0-9A-Za-z +]/i" ,$headers[0])) {
$status = preg_replace( "/http\/[0-9]\.[0-9]/i", "", $headers[0] );
return $status;
} else {
return 'Unknown status';
}
}
function url_exists($url, $timeout = 1) {
$html = get_head($url, $timeout);
if(empty($html)) {
return false;
}
$status = get_status($html);
if(strpos($status, '200 OK') !== FALSE) {
return true;
}
return false;
}
//В $str пишем URL
function checkLink($str)
{
$link[] = $str;
if(isset($link)) {
$links = unique_urls($link);
$result = Array();
foreach ($links as $l)
{
$result[] = array(url_exists($l, 1) ? true : false);
}
}
if(json($result)=="false")
{return false;}else{return true;}
}