我在变量中包含了一些包含图像标记的HTML代码,例如
html_chunk = "<p><img src="https://www.eff.org/files/HTTPS_Everywhere_new_logo.jpgxcvxcvxcv" style="width: 360px; height: 311px; " /><img alt="" src="https://mylocal/media/a649vb?filename=1339756119888_sprites_ie6.png&amp;type=attachment" /></p>"
我想将aditional参数说"&foo=123"
附加到该变量中的图片代码的所有src
属性中。
我尝试使用Ruby的gsub!
方法
html_chunk.gsub!(/"(http[s]?:\/\/.*?\/([media]+).*\")/) {|src| "#{src}&foo=123}"}
但它会在像这样的引号之后附加参数
<img alt="" src="https://mylocal/media/a649?filename=1339756119888_sprites_ie6.png&amp;type=attachment"&_foo=123 />
答案 0 :(得分:1)
你需要保留最后一个“捕获组之外。[^”]表示任何不是引用的字符:
html_chunk.gsub! %r|"(https?://[^"]*/media/[^"]*)|, '"\\1&foo=123'
答案 1 :(得分:0)
在javascript中:
// Create a dummy DOM element
var dom = document.createElement( 'div' );
dom.innerHTML = html_chunk;
// Get all the images
var imgs = dom.getElementsByTagName( 'img' );
// Loop through'em
[].forEach.call( imgs, function( img ) {
// Add a string to their src
img.src += '&foo=123';
} );
我很确定ruby中有一个DOM解析器。