Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка ссылки на относительность\абсолютность

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
LCarlo
Отправлено: 11 Октября, 2011 - 21:06:17
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Здравствуйте ув. форумчане !

Как сделать функцию проверки ссылки на абсолютность ?
Вот то, что я пытался:
PHP:
скопировать код в буфер обмена
  1.  
  2. if (preg_match ("/{^(\w*)?:[\/\/]}s", $что будет обрабатываться))
  3.     {
  4. функция, когда ссылка абсолютная
  5. }else{
  6. когда относительная
  7. }


Как не "крутил" - ничего не вышло ...

Без Вас - никак Закатив глазки
 
 Top
MCNet
Отправлено: 13 Октября, 2011 - 16:47:07
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Для начала, чтобы лучше понимать критерии отбора, приведём несколько примеров абсолютных ссылок:

http://domain/
https://domain/
ftp://domain/

Похоже на то, что, все ссылки, в которых присутствует последовательность "://" можно считать абсолютными. Даже более того, последовательность можно сократить до знака ':'.

Значит:
PHP:
скопировать код в буфер обмена
  1.  
  2. if (strpos($что_будет_обрабатываться, ':') === false) {
  3.     _call_rel_handler();
  4. } else {
  5.     _call_abs_handler();
  6. }
  7.  


Вариант не идеальный, т.к. пропустит ссылки вида http://domain/index/../style.css, но думаю идея понятна и с этим справишься сам Подмигивание

(Отредактировано автором: 13 Октября, 2011 - 16:48:12)

 
 Top
LIME
Отправлено: 13 Октября, 2011 - 17:17:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




MCNet если порт не встречается
если его учитывать лучше всеже :/
но тут еще надо виндовый слеш учесть
короче если что
вот регулярка для начального кода по этому принципу
#:[/|\]#
(Добавление)
MCNet пишет:
т.к. пропустит ссылки вида http://domain/index/../style.css
почему пропустит?
 
 Top
vasya1999
Отправлено: 13 Октября, 2011 - 18:17:19
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Могу предложить решение, которое я использовал в одном из своих проектов:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $testUrl = 'http://www.domain.ru/dir/dir?u=test';
  4.    
  5. if( preg_match('/^(http|https|ftp):\/\/([A-Z0-9])[A-Z0-9_-]*(\.?[A-Z0-9]+)+?/iU', $testUrl ) ) echo 'yes'; else echo 'no';
  6.  
  7.  


Данный код выведет 'yes' в том случае, если URL абсолютный и 'no', если вида /dir/dir?u=test
 
 Top
LCarlo
Отправлено: 13 Октября, 2011 - 19:10:36
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




vasya1999 пишет:
Могу предложить решение, которое я использовал в одном из своих проектов:

PHP:
скопировать код в буфер обмена



$testUrl = 'http://www.domain.ru/dir/dir?u=test';

if( preg_match('/^(http|https|ftp):\/\/([A-Z0-9])[A-Z0-9_-]*(\.?[A-Z0-9]+)+?/iU', $testUrl ) ) echo 'yes'; else echo 'no';





Данный код выведет 'yes' в том случае, если URL абсолютный и 'no', если вида /dir/dir?u=test


а можете поподробнее рассказать о переменной $testUrl (точнее о её корректном значении). При завершении кода постоянно выполняется функция "yes" . С кодом в 1-вом посте точно тоже самое было ...
(Добавление)
Всем огромнейшее спасибо за участие Радость ! Все работает Ха-ха

(Отредактировано автором: 13 Октября, 2011 - 19:11:08)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB