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

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

0 голосов
/ 30 сентября 2010

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

Если пользователь вводит это: 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'])

Ответы [ 5 ]

3 голосов
/ 30 сентября 2010

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

3 голосов
/ 30 сентября 2010

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

if (filter_var($_POST['link'], FILTER_VALIDATE_URL)) {
    // valid URL
} else {
   // not valid
}
2 голосов
/ 30 сентября 2010

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

$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);
}

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

0 голосов
/ 30 сентября 2010

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

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

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

0 голосов
/ 30 сентября 2010

я всегда иду с str_replace ха-ха

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