Я работаю над сообщениями на форуме, где мне нужно заменить введенные пользователем URL-адреса специальным форматированием (включая значок и т. Д.).Пользовательский ввод может быть следующим:
<p>This is a link: http://www.url1.com/</p>
<p>http://www.url2.com/</p>
<p><img src="http://www.url3.com/image.jpg"> something</p>
В частности, мне нужно заменить две первые ссылки (url1.com & url2.com) на измененные данные (необходимо изменить внутри блока кода,~ 30 строк кода).Тем не менее, я еще не нашел хороший способ реализовать такую вещь.
Если я сделаю
html.gsub(/http[s]?:\/\/[^(\s|<)]+/) { |url| "REPLACED" }
Я получу:
<p>This is a link: REPLACED</p>
<p>REPLACED</p>
<p><img src="REPLACED something</p>
Так что в основном,все остальное, кроме работы, но img src неправильно определяется как ссылка.
Я также пытался исключить возможные начальные символы для ссылки ("и", поскольку html заранее очищен, являясь допустимым html).
comment.gsub(/[^\"\']http[s]?:\/\/[^(\s|<\"\')]+/) { |url| "REPLACED" }
Этот вид работ приводит к следующему результату:
<p>This is a link:REPLACED</p>
<pREPLACED</p>
<p><img src="http://www.url3.com/image.jpg"> something</p>
Однако первый (и, возможно, последний) символ потерян. Я пытался использовать \ 1 и т. Д. Внутриблок кода, но не смог найти способ включить первый символ.
Есть предложения?