У меня есть следующее регулярное выражение, чтобы проверить, действителен ли URL:
preg_match('/^(http(s?):\/\/)?(www\.)?+[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/i', $url);
Мне нравится изменять эту часть [a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})
(по крайней мере, я надеюсь, что это жирная часть), чтобы она была либо IP-адресом, либо выделенной частью.
На данный момент регулярное выражение довольно хорошо для меня, так как оно правильно находит неправильные URL-адреса - хотя я считаю, что оно начнет работать неправильно после того, как новая политика домена от ICANN будет запущена (т. Е. Google может захотеть получить url http://search.google - вместо http://google.com для поиска)
Как бы то ни было, я бы хотел добавить возможность, чтобы IP-адреса также были действительными URL-адресами, но я не уверен, как включить это в регулярное выражение
Если бы кто-нибудь мог протянуть руку, это было бы здорово!