Регулярные выражения и php - PullRequest
0 голосов
/ 18 ноября 2009

У меня есть форма, где пользователи вводят URL. Мне нужно регулярное выражение, чтобы пропустить часть 'http://', если она присутствует. Например, если пользователь вставит в форму: http://youtube.com мне нужно сохранить только youtube.com. Я не знаю регулярных выражений. Не могли бы вы помочь мне? Спасибо!

Ответы [ 6 ]

4 голосов
/ 18 ноября 2009

Я думаю, что регулярное выражение будет здесь излишним. Как насчет этого?

$str = str_replace(array('http://', 'https://'),'',$str);
1 голос
/ 18 ноября 2009

Помните, что строка http:// может встречаться в URL-адресе два или более раз!

$parts = parse_url('http://youtube.com');
$url   = $parts['host'].$parts['path']; //.'?'.$parts['query'].'#'.$parts['fragment']

См. parse_url ()

0 голосов
/ 18 ноября 2009

Не требуется. Однако, если вы хотите регулярное выражение:

// get host name from URL
preg_match('@^(?:http://)?([^/]+)@i', $the_url, $matches);
$host = $matches[1];
0 голосов
/ 18 ноября 2009

Вы можете сделать это без регулярных выражений, поскольку вы не знаете регулярных выражений, и просто проверьте, находится ли индекс первой найденной строки "http://" (без учета регистра) в позиции 0, и удаляет ли ее.

0 голосов
/ 18 ноября 2009

Вы можете просто использовать substr, чтобы проверить, начинается ли строка с 'http://', и удалить эту часть; без регулярных выражений.

0 голосов
/ 18 ноября 2009

Вам не нужны регулярные выражения. Этого будет достаточно:

if (substr($str, 0, 7) == 'http://')
    $str = substr($str, 7);
else if (substr($str, 0, 8) == 'https://')
    $str = substr($str, 8);

РЕДАКТИРОВАТЬ: Добавлена ​​else if часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...