2010-03-29 5 views
1

Quelqu'un peut-il me dire s'il est possible de valider un lien avec php? Par valider, je veux dire vérifier si le lien est actif et ne fonctionne pas seulement le format réel du lien.Valider les liens avec php

+0

Check this out. http://www.tutorialcode.com/php/link-verifier-check-if-a-url-is-valid-or-not/ –

+0

Découvrez [ce sujet sur Stack Overflow] (http://stackoverflow.com/questions/408405/easy-test-a-url-for-404-in-php). – Jage

Répondre

8

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);