Проверка URL-адресов PHP + обнаружение

Итак, вот что мне нужно сделать.

Если пользователь вводит это: http://site.com Мне нужно удалить http:// поэтому строка будет site.com , если пользователь входит на сайт http://www.site.com Мне нужно удалить http://www. или если пользователь входит на сайт www.site.com мне нужно удалить www. или он также может войти на site.com это тоже будет хорошо.

У меня есть функция здесь, но не работает, как я хочу, и я сосать в регулярном выражении.

 preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $_POST['link']) 

Related of "Проверка URL-адресов PHP + обнаружение"

Я не думаю, что я буду использовать regex для этого, так как вы действительно проверяете, что находится в начале строки. Так:

 $link = $_POST['link']; if (stripos($link, 'http://') === 0) { $link = substr($link, 7); } elseif (stripos($link, 'https://') === 0) { $link = substr($link, 8); } if (stripos($link, 'www.') === 0) { $link = substr($link, 4); } 

должен позаботиться об этом.

filter_var() этого используйте filter_var() .

 if (filter_var($_POST['link'], FILTER_VALIDATE_URL)) { // valid URL } else { // not valid } 

Существует также функция parse_url .

я всегда иду с str_replace haha

 str_replace('http://','',str_replace('www.','',$url)) 

Я думаю, что вы ищете многоэтапное preg_replace() :

 $tmp = strtolower($_POST['link']) ; $tmp = preg_replace('/^http(s)?/', '', $tmp); $domain = preg_replace('/^www./', '', $tmp) ; 

Это также упрощает требуемое регулярное выражение.