Как показать количество активных ссылок?

В PHP можно показать количество активных ссылок на веб-странице, используя функции для работы с HTML и HTTP запросами.

Самый простой способ - это использовать функции, предоставляемые расширением curl. Это расширение позволяет делать HTTP запросы и получать информацию о каждой ссылке на странице. Например, чтобы получить количество активных ссылок на странице, вы можете использовать следующий код:

function countActiveLinks($url) {
  $ch = curl_init();

  // Устанавливаем параметры запроса
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

  // Отправляем запрос
  $response = curl_exec($ch);

  // Проверяем код ответа сервера
  $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  if ($httpCode !== 200) {
    // Ошибка: невозможно получить страницу
    return 0;
  }

  // Используем DOMDocument для работы с HTML
  $dom = new DOMDocument();
  @$dom->loadHTML($response); // Игнорируем ошибки парсинга HTML

  // Считаем количество активных ссылок
  $links = $dom->getElementsByTagName('a');
  $activeLinkCount = 0;
  foreach ($links as $link) {
    $linkUrl = $link->getAttribute('href');
    if (isUrlValid($linkUrl)) {
      $activeLinkCount++;
    }
  }

  // Возвращаем количество активных ссылок
  return $activeLinkCount;
}

function isUrlValid($url) {
  // Дополнительная проверка ссылки
  // Можно добавить валидацию других форматов URL или проверки активности ссылок

  // Проверяем, является ли ссылка относительной
  if (strpos($url, 'http') !== 0) {
    // Если ссылка относительная, то преобразуем ее в абсолютную
    $url = "http://".$_SERVER['HTTP_HOST'].$url;
  }

  // Проверяем доступность ссылки
  $headers = @get_headers($url);
  return ($headers && strpos($headers[0], '200') !== false);
}

// Пример использования
$url = "http://example.com";
$activeLinkCount = countActiveLinks($url);
echo "Количество активных ссылок на странице $url: $activeLinkCount";

Этот код использует функции curl для получения HTML кода веб-страницы. Затем, используя расширение DOMDocument, мы находим все ссылки на странице и проверяем их доступность с помощью функции isUrlValid(). Если ссылка считается активной, увеличиваем счетчик $activeLinkCount. В конце мы выводим количество активных ссылок на странице.

Учитывайте, что при проверке ссылок могут возникнуть ошибки или некорректные результаты, в зависимости от настроек сервера или содержания веб-страницы.