Проверка url не только на правильность, но и на работоспособность (и существование)
Здравствуйте форумчане! Подскажите, пожалуйста, как сделать проверку корректности введения URL в поле input, а также проверить его реальность (существование).
|
Проверять статус ответа по ссылке.
|
$url = 'ссылка';
// Инициализируем curl $ch = curl_init(); // Задаем URL curl_setopt($ch, CURLOPT_URL, $url); // Формируем заголовок curl_setopt($ch, CURLOPT_HEADER, 1); // Говорим, что возвращать сам контент нам не нужно curl_setopt($ch, CURLOPT_NOBODY, 1); // Вернуть данные передачи curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Записать данные в переменную $res = curl_exec($ch); curl_close($ch); echo '<pre>'; print_r($res); echo '</pre>'; if (strstr($res, 'HTTP/1.1 200 OK')) echo 'Рабочая'; else echo 'Не рабочая'; Так? |
Ну в общем-то это можно и без cURL узнать:
echo get_headers('http://javascript.ru/')[0]; Но статус не обязательно будет равен 200, это может быть и иной, но Ок. |
А можно сделать так, если страница "редиректит", т.е. переадресует, то признавать её не валидной, т.е. не рабочей? И еще как сделать, чтобы там где ссылка, она вставлялась через input, и, таким образом, проверялась на работоспособность.
|
В сети ищите значение всех статусов, если это неизвестно. А далее уж принимайте решение сами, какое вам нужно. Можно все что угодно.
preg_match('/\b\d{3}/', get_headers('http://javascript.ru/')[0], $match); if($match[0] != 200) { //необходимые действия } |
Sonya,
если много условий по статусам, то можно ведь не проверять каждый, а описать действия по статусам: $conditions = [ 302 => function() { // }, 404 => function() { // }, .... ]; if(array_key_exists($match[0], $conditions)) $conditions($match[0]); else /// Либо тот же switch. |
А полностью код, можно показать, а то запуталась?
|
Часовой пояс GMT +3, время: 23:37. |