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 :

Opérations sur les dates en PHP
Ucfirst ou Convertir la première lettre d'une chaine en majuscule
Vérifier la validité du format d'un email en PHP - Expression régulière
La superglobale $_SERVER et ses utilisations
Instruction SWITCH
Comment formater un grand nombre à l'affichage pour le rendre plus lisible (en PHP)
Parcourir les fichiers d'un répertoire en PHP
Une fonction file_put_contents pour PHP4
Suppession des accents dans une phrase en PHP
Convertir un format dateTime Français en format MySQL
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