![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
NSCO |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
Приветствую, коллеги.
Подскажите, как на перле сделать гиперссылку из строки адреса. То есть, из строки 'http://vingrad.ru' сделать '<a href=http://vingrad.ru>http://vingrad.ru</a>' А строку '<a href=http://vingrad.ru>бла-бла-бла</a>' оставлять как есть. |
|||
|
||||
kavkaz |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 26.12.2007 Репутация: 1 Всего: 2 |
В своё время на скорую руку придумал решение подобной проблемки, а со временем как то приелось - и решил оставить.
Суть в следующем: – регулярным выражением извлекаем по всем тексту ссылки из тэгов <a href="ссылка"> и <img src="ссылка">, попутно заменяя на какой нить очень редкий символ, например "\0", и впихиваем их в массив – делаем обработку http://ссылка на <a href="http://ссылка"> – делаем обратно замену "\0" по всему тексту на поочередно извлекаемые из массива хранящиееся ссылки получается нечто вроде этого:
коряво, зато работает ![]() можно попробовать вариант с регулярным выражением, которое обходит тэги <a> и <img>, но там были свои подводные камни |
|||
|
||||
NSCO |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
kavkaz, Спасибо, попробую.
Коллеги, где я на этом сайте видел вот этот пример конвертации строки в ссылку? s[((?:ht|f)tp://(?:[\w\-]+\.)+\w+(?:\:\d+)?(?:/[\w\.\~,\-/]*(?:\?[\w;% \+\-,\=\&]+)?(?:\*)?)?)][\<a href="$1">$1\</a>]goi; Там ещё пара была... Не могу найти. У этого же примера вместо s[((?:ht|f)tp: лучше сделать s[((?:ht|f)tp(?:s|): Но он ссылки со спецсимволами на конце обрезает. К примеру отрезает '.ru' от https://www.nic.ru/whois/?query=vingrad.ru Это сообщение отредактировал(а) NSCO - 1.6.2009, 12:41 |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
||||
|
||||
NSCO |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.11.2007 Репутация: нет Всего: нет |
Regexp впечатлил - монстр. Но провайдер его не поддерживает.
Пока обошёлся этим $str =~ s/\b(http|https|ftp):(\/\/)([a-z0-9.:@*()~#%\]\[_?=&\/\\-])+/<a href=$&>$&<\/a>/gi; |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |