【问题标题】:Regex to add and replace parts of a URL正则表达式添加和替换部分 URL
【发布时间】:2012-03-08 03:52:37
【问题描述】:

我正在尝试帮助好友使用他的 Facebook 发布到他的网站。我已经设法从他墙上的 RSS 提要中发布帖子,但提要中的任何图像都显示为小缩略图。

Facebook 图像缩略图与其全尺寸对应物之间的区别如下:

拇指-https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/378108_348325051862306_118443001517180_1297951_1051469646_s.jpg

完整-https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-ash4/s720x720/378008_348325051862306_118443001517180_1297951_1051469646_n.jpg

我已经用粗体表示了差异。

所以我正在寻找一种方法来进行这种替换,我认为正则表达式是一种方法,但我无法解决这样的问题。

答案和解释会很有帮助。提前致谢。

编辑:我可能会在 jQuery 中进行替换。

【问题讨论】:

  • 返回这些的 API 方法是什么?您应该能够只查询更大的 URL。编辑您的问题以包含一些示例代码,我们应该能够向您展示哪个 FQL 表或 API 方法可以为您提供正确的图像
  • 不使用 API。我直接从 Facebook 页面使用 RSS 提要。检查任何公开的 Facebook 页面,在左栏的底部有一个 RSS 提要。
  • 我很可能会使用 jQuery 来替换 URL 中的文本。

标签: regex facebook url


【解决方案1】:
var thumb_url = 'https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/378108_348325051862306_118443001517180_1297951_1051469646_s.jpg';

var full_url = thumb_url.replace(/(\/[^/]*)s\.jpg$/, '/s720x720$1n.jpg');

解释:

/(\/[^/])s.jpg/ 匹配正斜杠 \/ 后跟许多非正斜杠字符 [^/]* 后跟 s.jpg。它将从正斜杠到 s 的所有内容捕获到 $1 中。

然后它替换整个匹配: (在这种情况下/378108_348325051862306_118443001517180_1297951_1051469646_s.jpg

使用:/s720x720$1n.jpg 其中$1 是:

/378108_348325051862306_118443001517180_1297951_1051469646_

【讨论】:

  • 您好,感谢您的帮助。最后一个问题:如果我想找到与此匹配的所有 url,而不是专门将它们定义为变量,你能告诉我该怎么做吗?
  • 不客气。如果你想要一个拇指 url 数组并且你有类似 XML 字符串的东西,你应该使用类似的东西:var urls = str.match(/https:\/\/fbcdn-photos-a.akamaihd.net\/hphotos-ak-ash4\/[0-9_]*s.jpg/g);
  • 不确定akamaihdhphotos-ak-ash4 是否也会有所不同。
【解决方案2】:

这是我使用的最终解决方案,以防万一有人感兴趣。这会将来自 RSS 提要的所有 Facebook 缩略图图像与它们的全尺寸对应物切换:

$("img[src^='https://fbcdn-photos-a.akamaihd.net']")
.each(function()
{ 
  this.src = this.src.replace(/(\/[^/]*)s\.jpg$/, '/s720x720$1n.jpg');
});​

【讨论】:

  • 这还能用吗?因为我认为 fb 现在已经改变了他们的图片 URL 的工作方式。
猜你喜欢
  • 2022-11-11
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多