Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > 3p.station

Оценить эту запись

Парсинг линков в стринге.

Запись от 3p.station размещена 03.08.2011 в 21:40

Тема супер простая, однако пришлось потратить часов 5 пока не пришел к более-менее нормальному результату.
Следующий код парсит и заменяет человеческие линки на html-линки.
Код AS3:
private function replaceLinks(str:String):String
		{
			var string:String = str;
			var regLinksHTTP:RegExp = /(ftp:\/\/|http:\/\/|https:\/\/)([\.[:alnum:]_-]){0,4}([[:alnum:]_-]+\.)([[:alnum:]_-]\.?)([[:alpha:]]){0,3}+[\S]*(?<![^\w\/])/g;
			var regLinksWWW:RegExp = /[^\/](www)([\.[:alnum:]_-]){0,4}([[:alnum:]_-]+\.)([[:alnum:]_-]\.?)([[:alpha:]]){0,3}+[\S]*(?<![^\w\/])/g;
			var regEmail:RegExp = /[a-z0-9!#$%&'*+\/\=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g;
			string = string.replace(regLinksHTTP, "<a href='$&' target='blank'>$&</a>");
			string = string.replace(regLinksWWW, "<a href='http://$&' target='blank'>$&</a>");
			string = string.replace(regEmail, "<a href='mailto:$&'>$&</a>");
			return string;
		}
Спасибо ребятам за эту тулзню: http://www.gskinner.com/RegExr/desktop/
Всего комментариев 17

Комментарии

Старый 03.08.2011 22:07 TanaTiX вне форума
TanaTiX
 
Аватар для TanaTiX
Особо не вникал, но разве там в Community не нашлось подходящего варианта?
Старый 03.08.2011 23:22 3p.station вне форума
3p.station
 
Аватар для 3p.station
да, там есть различные паттерны и их много, но не один меня не удовлетворил полностью ( :
Старый 03.08.2011 23:30 Elff вне форума
Elff
тоже как-то стояла похожая задача, пришлось потратить минут 5
Код AS3:
private function repLink(str:String):String {
	var string:String = "<a href=\""+str+"\" target=\"blank\">"+str+"</a>";
	return string;
}
Обновил(-а) Elff 03.08.2011 в 23:48
Старый 03.08.2011 23:40 t4arty вне форума
t4arty
Вы, меня извените, но зачем это надо?
Старый 04.08.2011 00:38 3p.station вне форума
3p.station
 
Аватар для 3p.station
Elff, попробуйте обработать вашим методом например строку "www.google.com" и флеш перейдет на локальный адрес www, которого нет. или попробуйте передать такую стрингу " привет! перейди по этой ссылке www.google.com"
t4arty, например для текстового чата.

мой вариант обрабатывает также когда в конце ссылки может стоять точка или запятая, но если чтоит точка или запятая в самой ссылке, то проблем нет : "привет! зайди на мой сайт www.google.com. или на www.google.com/somestring.somestring"
Старый 04.08.2011 03:50 in4core вне форума
in4core
 
Аватар для in4core
Я вот тоже не понимаю где вообще это может пригодится? В жизни ни разу не встречал хоть и сделал оч много проектов разных типов
Старый 04.08.2011 04:00 3p.station вне форума
3p.station
 
Аватар для 3p.station
я же написал - текстовый чат.
Старый 04.08.2011 09:13 DaFive вне форума
DaFive
 
Аватар для DaFive
Зашибись регулярка. Возьму на заметку.
Старый 04.08.2011 09:52 dimarik вне форума
dimarik
 
Аватар для dimarik
Подскажите, что такое "человеческий линк".
Старый 04.08.2011 11:01 Astraport вне форума
Astraport
 
Аватар для Astraport
Спасибо, пригодится.
Старый 04.08.2011 22:23 3p.station вне форума
3p.station
 
Аватар для 3p.station
dimarik, думаю можно на ты
наврено не совсем подходящее выражение. Имелось ввиду ссылка введеная человеком без обрамления тегом <a>, например http://www.google.com или www.flasher.ru. Вот в послденем примере точка не должна попасть в тег <a>. а в этом случае: www.flasher.ru/somestring.somestrin точка принимается как часть урла. также "ловим" если юзер ввел эмейл.
Общее применение - подключаем css к текстовому полю и имеем все ссылки в кликабельном html виде.
Старый 05.08.2011 00:05 Котяра вне форума
Котяра
 
Аватар для Котяра
прикольно, еще бы добавить валидацию киррилических доменов)
а то пока нигде не работает)
домен.рф
Старый 05.08.2011 00:07 Котяра вне форума
Котяра
 
Аватар для Котяра
и кроме ftp:\/\/|http:\/\/|https: есть еще svn, git, ssh,rtmp итп протоколы, хотя они довольно специфичные и вряд ли нужны.
Кроме того ссылка domen.smth не должна прокатить - надо делать валидацию по доменам первого уровня)
А просто domen.com не пройдёт как ссылка - без www
Обновил(-а) Котяра 05.08.2011 в 00:10
Старый 05.08.2011 00:50 3p.station вне форума
3p.station
 
Аватар для 3p.station
да, можно опционально добавить еще разные префиксы. по поводу domen.smth - вот тут то и сложность. тоесть добавлять тогда уже и .рф придется.
Старый 05.08.2011 01:18 Elff вне форума
Elff
3p.station, извините за глупую шутку, был нетрезв (
Старый 05.08.2011 01:51 3p.station вне форума
3p.station
 
Аватар для 3p.station
аа, теперь понятненько нормас. я сначала так и подумал, но решил подстраховаться
Старый 05.08.2011 22:49 Psycho Tiger вне форума
Psycho Tiger
 
Аватар для Psycho Tiger
3p.station, про точку после адреса спорно. Любой адрес должен быть введен с точкой в конце: www.flasher.ru.
Это домен нулевого уровня. Просто для удобства пользователей все браузеры позволяют вводить эту точку опционально.

in4core, Вы видите это каждый день здесь на форуме. Например, http://www.google.ru. Я просто ввёл адрес, но при постинге он перестал быть просты текстом и стал ссылкой, на которую Вы можете кликнуть.

dimarik, это понятие близкое к ЧПУ, но относящиеся к линкам. Проще говоря ссылки, на которые можно кликнуть и сразу перейти по адресу. Тебя беспокоит что это не общепринятый термин или ты действительно не понял о чем речь?
 

 


Часовой пояс GMT +4, время: 09:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.