2

我有一大块 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;amp;type=attachment" /></p>"

我想将附加参数say附加到该变量内图像标签的"&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;amp;type=attachment"&_foo=123 />
4

2 回答 2

1

您需要将最后一个 " 保留在捕获组之外。 [^"] 表示任何不是引号的字符:

html_chunk.gsub! %r|"(https?://[^"]*/media/[^"]*)|, '"\\1&foo=123'
于 2012-06-19T08:14:20.950 回答
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 解析器。

于 2012-06-19T07:05:52.323 回答