par
Ryle » 01 juil. 2016, 15:33
Bonjour,
filter_var() te permet de valider le format de la variable que tu lui passes en paramètre. Ton usage est donc bon dans la mesure ou la fonction retournera vrai dès lors que la variable correspondra à une URL valide.
Attention cependant, une url valide est composée d'un protocole (quel qu'il soit), d'un domaine (incluant le port et éventuellement sous domaine, donc ça gère bien tes www), d'un chemin éventuel et d'une requête éventuelle. Une url de type FTP:, Telnet:, mailto: ... est donc également considérée comme valide.
Après si tu tiens à partir sur une expression régulière, la plus efficace semble être la suivante selon ce site
https://mathiasbynens.be/demo/url-regex
#^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$#iuS

Bonjour,
filter_var() te permet de valider le format de la variable que tu lui passes en paramètre. Ton usage est donc bon dans la mesure ou la fonction retournera vrai dès lors que la variable correspondra à une URL valide.
Attention cependant, une url valide est composée d'un protocole (quel qu'il soit), d'un domaine (incluant le port et éventuellement sous domaine, donc ça gère bien tes www), d'un chemin éventuel et d'une requête éventuelle. Une url de type FTP:, Telnet:, mailto: ... est donc également considérée comme valide.
Après si tu tiens à partir sur une expression régulière, la plus efficace semble être la suivante selon ce site https://mathiasbynens.be/demo/url-regex
[php]#^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$#iuS[/php] 8-|