Итак, вот что мне нужно сделать.
Если пользователь вводит это: 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'])
Я не думаю, что я буду использовать 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) ;
Это также упрощает требуемое регулярное выражение.