<?php
var_dump(filter_var('http://www.google.fr', FILTER_VALIDATE_URL));
var_dump(filter_var('www.google.fr', FILTER_VALIDATE_URL));
var_dump(filter_var('https://www.google.fr', FILTER_VALIDATE_URL));
var_dump(filter_var('google.fr', FILTER_VALIDATE_URL));
$regex = "((https?|ftp)\:\/\/)?"; // SCHEME
$regex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?"; // User and Pass
$regex .= "([a-z0-9-.]*)\.([a-z]{2,3})"; // Host or IP
$regex .= "(\:[0-9]{2,5})?"; // Port
$regex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?"; // Path
$regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+\/\$_.-]*)?"; // GET Query
$regex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?"; // Anchor
var_dump(preg_match("/^$regex$/", 'http://www.google.fr'));
var_dump(preg_match("/^$regex$/", 'www.google.fr'));
var_dump(preg_match("/^$regex$/", 'https://www.google.fr'));
var_dump(preg_match("/^$regex$/", 'google.fr'));
var_dump(preg_match("/^$regex$/", 'www.example.com/etcetc'));
var_dump(preg_match("/^$regex$/", 'test.fr/test-test.html?test=1e#test'));
var_dump(preg_match("/^$regex$/", 'http://www.example.com/etcetc'));
preferences:
36.92 ms | 402 KiB | 5 Q