Contrôler la syntaxe d'une URL

Eléphant du PHP | 63 Messages

01 mai 2008, 10:46

Bonjour à tous !

J'ai mis au point cette EREG pour "contrôler" une URL (HTTP ici, mais vous pouvez rajouter ce que vous voulez en séparant les données par |. Exemple : http:// | https:// | ftp: ). Pour le peu de test que j'ai fait, cela fonctionne à peu près... Si quelqu'un pouvait me dire ce qui pourrait clocher et comment le corriger... Merci à tous !

Code : Tout sélectionner

<?php $url = "" ; // Mettre URL de votre choix if (ereg("^(http://|https://)?[-[:alnum:]\.]*[[:alnum:]]+(\.([a-zA-Z]{2,4})+[-\?&\=\._/[:alnum:]]*)$" , $url)) echo 'Url ok' ; else echo 'Erreur dans la syntaxe' ; ?>
Merci à tous

Mammouth du PHP | 2937 Messages

01 mai 2008, 17:21

Une suggestion d'amélioration du code, en utilisant preg_match() et améliorant l'expression régulière.
<?php
$url = ''; // Mettre URL de votre choix
if (preg_match ("#^(https?://)?[-[:alnum:]\.]*[[:alnum:]]+\.[a-z]{2,4}(\.[a-z]{2})?[-\?&\=\._/[:alnum:]]*$#i" , $url)) echo 'Url ok';
else echo 'Erreur dans la syntaxe';
?>

Eléphant du PHP | 63 Messages

01 mai 2008, 18:33

Salut Victor!

Effectivement... Selon le manuel :
Note: preg_match(), qui utilise la syntaxe des expressions rationnelles compatibles PERL, est une alternative plus rapide de ereg().
Et tu as rajouté l'insensibilité à la casse... cool et Merci !!

Zeuf