gordon_shamway
@gordon_shamway

Как проверить в php существует ли силка?

Есть скрипт который берет текст из страницы по силке и записывает в файл
file_put_contents("file.txt", fopen($url, 'r'));
Как проверить перед записью существует ли силка или нет?
  • Вопрос задан
  • 2918 просмотров
Решения вопроса 1
tomnolane
@tomnolane
профессиональный разработчик
Проверяем ссылку на существование:
Первым делом разобьем ссылку на составляющие части и проверим записи DNS
$url_p=parse_url($url);
if (!empty ($url_p ['host']) and checkdnsrr($url_p ['host'])){
 // Запись DNS существует
}

Когда мы убедились, что такой сайт существует, мы должны получить ответ от сервера:
if ($otvet=@get_headers($url)){
 echo  substr($otvet[0], 9, 3);
}

Если сервер вернет код 200 или 301/302, тогда страница существует!

полный скрипт:
<?
// Корректность ссылки (URL)
function check_url($url)
{ 
  if(preg_match("@^http://@i",$url)) $url = preg_replace("@(http://)+@i",'http://',$url);
  else if (preg_match("@^https://@i",$url)) $url = preg_replace("@(https://)+@i",'https://',$url);
  else $url = 'http://'.$url;
 
 
  if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { 
    return false;
}
else return $url;
}
 // Существование ссылки (URL)
function open_url($url)
{
 $url_c=parse_url($url);
 
  if (!empty($url_c['host']) and checkdnsrr($url_c['host']))
  {
    // Ответ сервера
    if ($otvet=@get_headers($url)){
      return substr($otvet[0], 9, 3);
    }
  }
  return false;     
}

// Проверка ссылки
$url='https://tomnolane.ru/';
if ($url=check_url($url))
{
  // ссылка корректная
  if ($o=open_url($url))
  {
    echo "Ответ сервера " . $o;
  }
  else
  {
    echo "Сервер не отвечает";
  }
}
else echo "Некорректная ссылка";
?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы