Я хочу преобразовать строку URL-адреса в элемент HTML-ссылки (<a href="#"></a>) (например, Facebook делает со своими URL-адресами в тексте, например)

Я попробовал это решение Преобразование ссылок из строки в интерактивные ссылки с использованием Ruby / Rails, но я просто получаю HTML-ссылку в виде простого текста ...

Пример :

У меня есть это

string = "blabla http//www.google.com blabla
lorem ipsum lorem ipsum"

И я бы сделал это не в виде обычного текста, а как элемент HTML

<p>blabla</p> 
<a href="http//www.google.com">http//www.google.com</a> 
<p>blabla</p>
<p>lorem ipsum lorem ipsum</p>

Спасибо за помощь :)

1
LinkOfCode 14 Янв 2021 в 14:37

2 ответа

Лучший ответ

Простой текст может быть преобразован в HTML с помощью метода html_safe для строки. Нравится '<a href="http//www.google.com">http//www.google.com</a>'.html_safe

0
CR7 14 Янв 2021 в 13:38

Я бы разделил ввод на «слова», сравнил бы каждое слово с регулярным выражением для URL-адреса и, если он совпадает, заключил бы его в элемент ссылки.

В этом ответе я буду использовать простое регулярное выражение. Мы будем рассматривать все, что начинается с http:// или https://, как URL. Вы можете использовать что-нибудь более продвинутое, если хотите.

string = "blabla https://www.google.com blabla lorem ipsum lorem ipsum"

string = string.split.map do |word|
  if /https?:\/\/.*/.match word
    next "<a href=\"#{word}\">#{word}</a>"
  else
   next word
  end
end.join(' ')

puts string #=> blabla <a href="https://www.google.com">https://www.google.com</a> blabla lorem ipsum lorem ipsum

Обратите внимание, что на самом деле это не работает с исходной строкой в ​​вашем ответе, потому что это недействительный URL-адрес (отсутствует двоеточие).

0
iCodeSometime 14 Янв 2021 в 17:24
65718262