le MEMO du WEB développeur
••• PHP •••  Liste des Mémos, astuces et bonnes pratiques

Vérifier la validité d'une URL en PHP - Expression régulière

Pour vérifier qu'une adresse internet est d'un format valide, voici deux solutions.

Vérifier la validité de l'URL avec les expressions régulières :

$monUrl= "http://memo-web.fr";
if (preg_match('#^(http|https)://[\w-]+[\w.-]+\.[a-zA-Z]{2,6}#i', $monUrl))
{
    echo "Mon URL est valide";
}else{
    echo "MonURL n'est pas valide";
}

On vérifie avec les expressions régulières que la chaîne $monUrl commence par 'http://' ou 'https://' et l'on vérifie qu'elle se termine par un point suivi de 2 à 6 lettres.

Vérifier la validité de l'URL avec filter_var

La fonction PHP filter_var permet de filtrer une variable passée en paramètres à l'aide de différents filtres, l'un deux FILTER_VALIDATE_URL est concu pour filtrer les URL de protocole http

Si la variable n'a pas passé le filtre, la valeur de retour est vide.

$monUrl = "http://memo-web.fr";
$monUrl = filter_var($monUrl, FILTER_VALIDATE_URL);
if ($monUrl!='')
{
    echo "Mon URL est valide";
}else{
    echo "MonURL n'est pas valide";
}

 

publié le 13/08/2013 par Memo Web
Expression régulière
Commentaire :
Ok je vais revoir ce code et actualiser le mémo. Merci pour le retour
par tarabusk, le 13/03/2014
La première solution (la regex) ne fonctionne pas correctement : il manque une partie pour valider correctement l'URL, autrement ça passe sans le TLD :

preg_match('#^(http|https)://[\w-]+[\w.-]+\.[a-zA-Z]{2,20}\.[a-zA-Z]{2,5}#i', $value))

J'ai mis 20 caractère pour le NDD, de façon totalement arbitraire ...

Sinon, je ne connaissais pas le filter_var, c'est bien, mais ça ne passe pas terrible non plus : soit on ne renseigne pas le flag FILTER_FLAG_PATH_REQUIRED, et ça passe comme dans un moulin, sans TLD (ça vérifie juste le http://www), soit on le met, et là on est obligé de renseigner le slash de fin d'URL, ce que beaucoup d'internautes ne font pas.

Voilà, merci quand même pour le partage.
par inconnu, le 09/01/2014
Commenter le Mémo :

Parcourir les fichiers d'un répertoire en PHP
Fonction include() en PHP et URL externe
Foncer ou eclaircir une couleur en PHP
Affichage tampon en PHP : Output buffering
Division en PHP - Partie entière
Fonction de sécurisation des données passées dans formulaire ou URL
Tester format de chaîne style mot de passe
Problème : header("Location ... ne marche pas
Vérifier la validité du format d'un email en PHP - Expression régulière
Formater une chaine en URL
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos