2016-01-13 3 views
0

Как я могу заменить в строке все https с источника изображения на http?Ruby заменить img src https на http

<img src="https 
<img src='https 
<img title="title" src="https 

Из-за этого типа комбинаций

"text <img src='https://image.com/img.jpg' /> text".gsub('<img src="https', '<img src="http') 

позволит HTTPS unreplaced.

gsub('https', 'http') 

не очень хорошо, потому что я не хочу заменять ссылки, например.

+0

Идеальное решение будет для веб-сервера, чтобы перенаправлять на 'https' URL –

+0

Если вам просто нужно регулярное выражение для GSUB: '.gsub (/

ответ

2

Использование регулярных выражений вместо строки:

mystring = "text <img src='https://image.com/img.jpg' /> text" 

mystring.gsub(/\<img src=("|')https.+("|')/){|match| match.gsub('https','http')} 
=> "text <img src='http://image.com/img.jpg' /> text" 
+0

Он отлично работает. Спасибо. Можете ли вы посоветовать мне, где я могу легко изучить регулярное выражение? –

+0

@IonVasile: http://stackoverflow.com/tags/regex/info – Jan

1

Если теги изображения состоят только из <img src=""> (без атрибутов), вы могли бы о следующем:

<img.*?src=('|")((?!https)[^"']+)\1 
# look for an image tag literally 
# look for src=" or src=' 
# assure that it is no https (negative lookahead) 
# capture everything up to the previously captured delimiter (quote/double quote) 

Эти строки должны быть заменены.

См https://regex101.com/r/nA4yX4/1

Смежные вопросы