|
|
|
| Просмотрел много тем но реально работающего варианта так и не нашел.
Ведь пользователь может ввеси в форму все что угодно.
Как проверить что это URL и сформировать ссылку, пускай она даже будет и не работающая?
Смотрел варианты и с регулярными выражениями вроде:
(http:\/\/)?(www\.)?([\d\w\-]+(\.[\d\w\-]+)*)((\/([\d\w\-]+\/)+)([\d\w\.\-]+))?
|
которое некорректно работает если пользователь не указал // после http: и сбивается на : и ; в URL.
Пробовал так же и с parce_url() тоже не всегда может разобрать строку.
Подскажите работающий вариант. | |
|
|
|
|
|
|
|
для: durable
(10.02.2010 в 14:11)
| | И все же? | |
|
|
|
|
|
|
|
для: durable
(01.03.2010 в 08:44)
| | Я бы сразу попробовал средствами рнр открыть страницу по той ссылке, которую ввел посетитель. И если страница не открывается, то сообщил бы ему об этом. | |
|
|
|
|
|
|
|
для: Владимир55
(01.03.2010 в 12:58)
| | это долгая процедура, я б так не делал. | |
|
|
|
|
|
|
|
для: Рома
(01.03.2010 в 14:23)
| | Поскольку ввод осуществляется вручную, скорость здесь не очень важна.
Зато это была бы действительно проверка (самой ссылки, а не гипотезы ее правильности). | |
|
|
|
|
|
|
|
для: Владимир55
(01.03.2010 в 15:00)
| | Задача такая - пользователь вводит URL (но мы то знаем что пользователь может ввести что угодно) и из него формируется ссылка вида <a href="http://www.site.ru">URL введенный пользователем</a>
а пользователь может ввести
site.ru
www.site.ru
http://www.site.ru
http://site.ru
и это только правильные варианты....
а если неправильные то их надо как то откидывать
Кстати а если я из строки введенной пользователем выброшу все символы, которые не могут входить в ссылку, и потом проверю а первые 7 символов на http:// если нет то добавлю...
Н и пскай будет нерабочая ссылка... не будет ли это дверка хакерам?
Насколько это правильно с точки зрения безопасности, а не с точки зрения правильности ссылки? | |
|
|
|
|
|
|
|
для: durable
(01.03.2010 в 16:22)
| | На мой взгляд, нерабочая ссылка сама по себе не понижает безопасность сайта.
Лично я делаю так, как описал: проверяю четыре упомянутых Вами варианта и дописываю то, что необходимо, в зависимости от результатов проверки. Далее file_get_contents и соответствующее сообщение посетителю.
П.С. Похоже, что Вы предлагаете посетителю ввести не ссылку, а адрес сайта или страницы. Это разные вещи. | |
|
|
|
|
|
|
|
для: Владимир55
(01.03.2010 в 17:04)
| | Да, Вы правы, я прошу пользователя указать адрес сайта и хочу на автомате сформировать ссылку, оставив введенный им адрес как указатель ссылки. | |
|
|
|
|
|
|
|
для: durable
(01.03.2010 в 08:44)
| | если это не аjаx-ссылки, просто необходимо проверять корректность ссылок регулярками, а то может негативно отразиться на поисковиках. да и пользователи не будут в восторге от битых ссылок. | |
|
|
|
|
|
|
|
для: durable
(10.02.2010 в 14:11)
| | Если нужен только домен, то так:
function domen($domen){
if(strpos ($domen, "http")!== false){
$pos5 = strpos($domen, "http");
$domen = substr($domen, $pos5+7, strlen($domen)-$pos5-7);
}
if(strpos ($domen, "www") !== false){
$pos6 = strpos($domen, "www");
$domen = substr($domen, $pos6+4, strlen($domen)-$pos6-4);
}
$dom_arr = explode("/", $domen);
$domen = $dom_arr[0];
$domen = trim($domen);
$domen = strtolower($domen);
return $domen;
}
|
Если нужна ссылка с папками и страницами, то допишите регулярку... | |
|
|
|