Vous devez faire une requête HEAD et vérifier la réponse. 200 indique que la requête a réussi. Il y en a d'autres que vous pouvez vouloir traiter comme found here. (301 et 302 réoriente viennent à l'esprit)
Si vous utilisez cURL, vous pouvez utiliser quelque chose comme ça
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE); //Include the headers
curl_setopt($ch, CURLOPT_NOBODY, TRUE); //Make HEAD request
$response = curl_exec($ch);
if ($response === false){
//something went wrong, assume not valid
}
//list of status codes you want to treat as valid:
$validStatus = array(200, 301, 302, 303, 307);
if(!in_array(curl_getinfo($ch, CURLINFO_HTTP_CODE), $validStatus)) {
//the HTTP code is not valid. The url is not valid
}
curl_close($ch);
Check this out. http://www.tutorialcode.com/php/link-verifier-check-if-a-url-is-valid-or-not/ –
Découvrez [ce sujet sur Stack Overflow] (http://stackoverflow.com/questions/408405/easy-test-a-url-for-404-in-php). – Jage