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]   

> Описание: Обработка ссылок с помощю replace() JS
Zveryugaz
Отправлено: 30 Марта, 2015 - 15:39:07
Post Id



Гость


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


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




Здравствуйте Друзья!
Помогите разобрать регулярку
В общем код перебирает все комменты на странице и при нахождении ссылки в виде текста превращает ее в тег <a>

пример текста на странице {
форум forum.php.su самый гуманный форум в мире Улыбка
Ссылка: http://php.su/
Картинка: http://forum.php.su/im/emoticons/odnako.gif
}

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. var re = '((http:\/\/|https:\/\/)+(www.)*[a-z0-9._/-]+)';
  4. $('#rev').each(function( i, d ){
  5.         tex = $(d).html();
  6.         var newstr = tex.replace(new RegExp(re,'gim'),"<a href='$1'>$1</a>");
  7.         $(d).html(newstr);
  8. });
  9.  


Код работает со всеми ссылками, проблема в том что мне нужно для картинок делать другой тег, то есть обычную ссылку превратить в тег <a> а картинку соответственно в <img>
Подскажите как справиться с задачей?
 
 Top
Faraon-san
Отправлено: 30 Марта, 2015 - 16:14:44
Post Id



Посетитель


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


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




попробуй такое:
CODE (javascript):
скопировать код в буфер обмена
  1. var tex = $('#rev').html();
  2.     tex = tex.replace(new RegExp(/((http|https)\:\/\/[\w\-\.]+\.[\w]{2,5}(\/\S*)?(\w+.(jpg|png|gif)))/igm),'<img src="$1">');
  3.     tex = tex.replace(new RegExp(/((http|https)\:\/\/[\w\-\.]+\.[\w]{2,5}(\/\S*)?(\w+.(^jpg|^png|^gif)))/igm), '<a href="$1">$1</a>');
  4.     $('#rev').html(tex);

(Отредактировано автором: 30 Марта, 2015 - 16:50:57)

 
 Top
Zveryugaz
Отправлено: 30 Марта, 2015 - 17:01:58
Post Id



Гость


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


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




Faraon-san пишет:
попробуй такое:
CODE (javascript):
скопировать код в буфер обмена
  1. var tex = $('#rev').html();
  2.     tex = tex.replace(new RegExp(/((http|https)\:\/\/[\w\-\.]+\.[\w]{2,5}(\/\S*)?(\w+.(jpg|png|gif)))/igm),'<img src="$1">');
  3.     tex = tex.replace(new RegExp(/((http|https)\:\/\/[\w\-\.]+\.[\w]{2,5}(\/\S*)?(\w+.(^jpg|^png|^gif)))/igm), '<a href="$1">$1</a>');
  4.     $('#rev').html(tex);


Картинку обработал нормально а ссылку чего то не берет (

Картинку еще вот так выдергивает
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var re = '(((http:\/\/|https:\/\/)+(www.)*[a-z0-9._/-]+)(.gif|.png|.jpg))';
  3.  

обычные ссылки не трогает

(Отредактировано автором: 30 Марта, 2015 - 17:02:37)

 
 Top
Zveryugaz
Отправлено: 30 Марта, 2015 - 20:24:17
Post Id



Гость


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


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




всю бошку сломал, танцы с бубном не дают результатов Недовольство, огорчение
 
 Top
Ts.Saltan
Отправлено: 30 Марта, 2015 - 23:30:32
Post Id



Посетитель


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


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




Как вариант
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. text.replace(/(((http:\/\/|https:\/\/)+(www.)*[a-z0-9._\/-]+))/igm,'<a href="$1">$1</a>')
  3. .replace(/\>(((http:\/\/|https:\/\/)+(www.)*[a-z0-9._\/-]+)(.gif|.png|.jpg))\</igm,' target="_blank"><img src="$1"><');
  4.  


Оборачивает сначала все ссылки в тег <a>
Потом ищет среди ссылок картинки, т.е. получается картинка, обёрнутая в ссылку Радость

Из этого
CODE (htmlphp):
скопировать код в буфер обмена
  1. Ссылка: http://php.su/asdasd
  2. Картинка: http://forum.php.su/im/emoticons/odnako.gif

получается это
CODE (html):
скопировать код в буфер обмена
  1. Ссылка: <a href="http://php.su/asdasd">http://php.su/asdasd</a>
  2. Картинка: <a href="http://forum.php.su/im/emoticons/odnako.gif" target="_blank"><img src="http://forum.php.su/im/emoticons/odnako.gif"></a>
 
 Top
Faraon-san
Отправлено: 31 Марта, 2015 - 00:48:52
Post Id



Посетитель


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


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




Вот так попробуем:
CODE (javascript):
скопировать код в буфер обмена
  1. var tex = $('#rev').html();
  2.         var urlCheck = '((?:http[s]?:\\/\\/(?:www\\.)?|www\\.){1}(?:[0-9A-Za-z\\-%_]+\\.)+[a-zA-Z]{2,}(?::[0-9]+)?(?:(?:/[0-9A-Za-z\\-#\\.%\+_]*)+)?(?:\\?(?:[0-9A-Za-z\\-\\.%_]+(?:=[0-9A-Za-z\\-\\.%_\\+]*)?)?(?:&(?:[0-9A-Za-z\\-\\.%_]+(?:=[0-9A-Za-z\\-\\.%_\\+]*)?)?)*)?(?:#[0-9A-Za-z\\-\\.%_\\+=\\?&;]*)?)';
  3.     tex = tex.replace(new RegExp(urlCheck, 'igm'), '<a href="$1">$1</a>');
  4.     tex = tex.replace(new RegExp(/<a[\s]*href="((http[s]?)\:\/\/[\w\-\.]+\.[\w]{2,5}(\/\S*)?(\w+.(jpg|png|gif)))">(?:[\w\-\/\:\.]*<\/a>)/ig),'<img src="$1">');
  5.     $('#rev').html(tex);
 
 Top
Zveryugaz
Отправлено: 31 Марта, 2015 - 10:40:45
Post Id



Гость


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


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




Ts.Saltan пишет:
Как вариант
CODE (javascript):
скопировать код в буфер обмена


text.replace(/(((http:\/\/|https:\/\/)+(www.)*[a-z0-9._\/-]+))/igm,'<a href="$1">$1</a>')
.replace(/\>(((http:\/\/|https:\/\/)+(www.)*[a-z0-9._\/-]+)(.gif|.png|.jpg))\</igm,' target="_blank"><img src="$1"><');


Оборачивает сначала все ссылки в тег <a>


Faraon-san пишет:
Вот так попробуем:
CODE (javascript):
скопировать код в буфер обмена

var tex = $('#rev').html();
var urlCheck = '((?:http[s]?:\\/\\/(?:www\\.)?|www\\.){1}(?:[0-9A-Za-z\\-%_]+\\.)+[a-zA-Z]{2,}(?::[0-9]+)?(?Недовольство, огорчение?:/[0-9A-Za-z\\-#\\.%\+_]*)+)?(?:\\?(?:[0-9A-Za-z\\-\\.%_]+(?:=[0-9A-Za-z\\-\\.%_\\+]*)?)?(?:&(?:[0-9A-Za-z\\-\\.%_]+(?:=[0-9A-Za-z\\-\\.%_\\+]*)?)?)*)?(?:#[0-9A-Za-z\\-\\.%_\\+=\\?&;]*)?)';
tex = tex.replace(new RegExp(urlCheck, 'igm'), '<a href="$1">$1</a>');
tex = tex.replace(new RegExp(/<a[\s]*href="((http[s]?)\:\/\/[\w\-\.]+\.[\w]{2,5}(\/\S*)?(\w+.(jpg|png|gif)))">(?:[\w\-\/\:\.]*<\/a>)/ig),'<img src="$1">');
$('#rev').html(tex);


Ребят спасибо огромное, оба варианта работают 100% Превосходно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB