Готовый regexp: путь из URLа

  • Автор темы trigger
  • Дата начала
Статус
В этой теме нельзя размещать новые ответы.

trigger

Guest
Готовый regexp: путь из URLа

Боюсь что парсер форума поставит слеши, поэтому даю в 2-х экземплярах:
/^(?:http:\/\/)*([a-z0-9-]+(?:\\.[a-z0-9-]+)+(?:\/(?:[a-z0-9!~@?-]+(?:\/|$))*)?).*$/i
Например для http://trigger-tools.narod.net/download/tool.rar
получится:
0:http://trigger-tools.narod.net/download/tool.rar
1:trigger-tools.narod.net/download/
PHP:
$R = '/^(?:http:\/\/)*([a-z0-9-]+(?:\\.[a-z0-9-]+)+(?:\/(?:[a-z0-9!~@?-]+(?:\/|$))*)?).*$/i';
$res_name = preg_replace($R, '\\1', trim($res_name));
if(substr($res_name, -1) != '/'){
	$res_name .= '/';
}
Очень буду рад сообщениям типа: "Он плохо работает так как: .....". [=
 

trigger

Guest
Автор оригинала: KR
он плохо работает так как есть parse_url();
Заглянем в ман :cool: php_manual_en говорит:
This function is not meant to validate the given URL, it only breaks it up into the above listed parts. Partial urls are also accepted, parse_url() tries its best to parse them correctly.
$ php -r 'print_r( parse_url("http://invalid_host..name/"));'
Array
(
[scheme] => http
[host] => invalid_host..name
[path] => /
)

А у меня перед этим юзается:
PHP:
}elseif(!preg_match($R, $res_name)){
	$errors[] = 'Неверный адрес';
	$res_name = '';
}else{
:)
 

RomikChef

Guest
trigger
в вопросе надо писать именно то, что тебя интересует

на твой вопрос - КАК получить путь из урла дали четкий ответ.
если у тебя есть другие вопросы - милости просим, сформулируй и задай.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху