Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法通过javascript从图像src url获取数字?_Javascript_Jquery - Fatal编程技术网

有没有办法通过javascript从图像src url获取数字?

有没有办法通过javascript从图像src url获取数字?,javascript,jquery,Javascript,Jquery,我到处找,找不到我问题的答案。也许我问错问题了 所以,我的问题是:我有一个blogroll,显示最新的帖子图片,我有来自不同平台的网站和博客,我想与我的读者分享,包括WordPress。 大多数图片(缩略图)是方形的,但是来自WP博客的图片有多种尺寸。通过分析图片src,我发现替换url的最后一部分是成功的,我可以使这些图片与其他图片相匹配,而不会影响我的网站设计。:) 例如: 您需要使用正则表达式 img = $(this).find('img').attr('src').replace(/w

我到处找,找不到我问题的答案。也许我问错问题了

所以,我的问题是:我有一个blogroll,显示最新的帖子图片,我有来自不同平台的网站和博客,我想与我的读者分享,包括WordPress。 大多数图片(缩略图)是方形的,但是来自WP博客的图片有多种尺寸。通过分析图片src,我发现替换url的最后一部分是成功的,我可以使这些图片与其他图片相匹配,而不会影响我的网站设计。:)

例如:


您需要使用正则表达式

img = $(this).find('img').attr('src').replace(/w=[0-9]+/, 'w=126&h=126&crop=TRUE');
这将匹配:

w=(位数)

[0-9]匹配一个数字

[0-9]+匹配连续数字

因为
attr()
只返回第一个匹配元素的给定属性,所以我建议更改(可能很多)元素:

$(this).find('img').prop('src', function(i, src) {
    return src.replace(/(w=\d+)$/, '?w=126&h=126&crop=TRUE');
});
(请提供)

如果您需要存储更改图像的引用(如您的问题所述),可以链接
get()
以返回数组:

var changedImages = $(this).find('img').prop('src', function(i, src) {
    return src.replace(/(w=\d+)$/, '?w=126&h=126&crop=TRUE');
}).get();
参考资料:


经常使用regexp解决一个问题意味着您将遇到两个问题。但在这种情况下,这就是解决方案。我建议使用
/w=[1-9][0-9]*/
而不是
/w=[0-9]+/
-任意文本上的regexp永远不会太具体。请注意,这样做的结果是将变量“img”设置为修改后的URL-需要重新分配“src”属性。我让它与您的解决方案一起使用,但必须如下所示:。替换(/w=[0-9]+/,'w=126&h=126&crop=TRUE')@OsvaldoCorreia是的,我刚刚看到这个问题,几秒钟前我刚刚编辑了它。@Brian你需要这样使用:顺便问一下,为什么要使用downvote?
函数(i,src{
to
函数(i,src){
@Brian:唉,iPad真的不是JavaScript/编码的工具。-/这是一个很好的解决方案,但我需要一些只在一行中工作的东西,因为我发布的这行代码是我的blogroll的大型编码的一部分。@OsvaldoCorreia如果你只想替换那行代码,你仍然可以使用我的答案。如果行数是一个问题,请将呼叫移回用这样的答案回答一行
var changedImages = $(this).find('img').prop('src', function(i, src) {
    return src.replace(/(w=\d+)$/, '?w=126&h=126&crop=TRUE');
}).get();