Определение, содержит ли URL определенное имя хоста - PullRequest
0 голосов
/ 27 ноября 2011

Мне нужно сделать регулярное выражение для php preg_match, которое выполняет следующее сопоставление.

Это функция

function isValidURL($url,$searchfor){
    return preg_match("/\b.$searchfor \b/i", $url);
}

Мне нужно найти somedomain.com в следующих возможныхСтроки, входящие в функцию

http://www.somedomain.com
http://somedomain.com
http://www.somedomain.com/anything
http://somedomain.com/anything
http://anything/somedomain.com

Поэтому мне нужно регулярное выражение, которое делает это

http://www.somedomain.com           Will Match
http://somedomain.com               Will Match
http://www.somedomain.com/anything  Will Match
http://somedomain.com/anything      Will Match

, но

http://anything/somedomain.com      Will NOT match

Ответы [ 3 ]

2 голосов
/ 27 ноября 2011

Как насчет использования parse_url()?

if( strpos(parse_url($url, PHP_URL_HOST), 'somedomain.com') !== false )
{
  // hostname contains 'somedomain.com'.
}
2 голосов
/ 27 ноября 2011

Попробуйте это ...

$url = "http://komunitasweb.com/";
if (preg_match('/^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?   (d+)?/?/i', $url)) {
    echo "Your url is ok.";
} else {
    echo "Wrong url.";
}

Скопировано из поисковика Google по "регулярному выражению php url". Проверьте Google, удивительный инструмент. : -)

1 голос
/ 27 ноября 2011

Все, что для этого требуется, - это заполнитель для начала URL.Исключение косых черт с отрицательным символьным классом [^/] может быть уже достаточным:

function isValidURL($url,$searchfor){
    return preg_match("~http://[^/\s]*\.$searchfor(/|$|\s)~i", $url);
}

Обратите внимание, что в некоторых крайних случаях это не так, например, user:pw@ пары.И не знаю, должен ли ваш $searchfor уже содержать ДВУ.Также не забудьте preg_quote это.

...