jQuery:找到所有图像链接并将它们转换为一些默认拇指?

标签 jquery regex image

我有所见即所得,我不允许用户上传图像,只允许链接到网站外部的图像。

所以我想找到每个图像链接/路径,并将其替换为一些默认的拇指,用户可以单击该拇指,该图像将显示在模式窗口中。我正在使用 qTip,但这将是我工作的一部分:)

如果有:

http://sstatic.net/so/img/logo.png

http://l.yimg.com/a/i/ww/news/2010/02/22/fries_on_plate-pd.jpg

它们将被“转换”为类似:

<a href="http://OriginalPathToImage" rel="tool_tip"><img src="/SomeDefaultImageThumb.jpg" /></a>

那么,如何查找所有图像呢?用于查找 .jpg、.gif、.png... 或其他解决方案的 RegExp 是什么?

最佳答案

很难确切地说出要做什么,因为我不知道您在搜索什么。

如果链接当前是标签的一部分,那就很简单。

但听起来图像 href 目前不属于任何标签。是这样吗?

如果是这样,并且您认为需要 reg exp,您可以尝试,

var result = text.match(/http:\/\/\S+(\.png|\.jpg|\.gif)/g);

(这是一个简单的问题,我确信可以稍微收紧一点。事实上,例如,它不允许在 href 中使用“空格”字符。)

它将搜索“http://”加上除空格字符外的任何内容加上“.png”或“.jpg”或“.gif”,并返回结果数组。

因此,如果搜索文本是:

var text = 'http://sstatic.net/so/img/logo.png some text http://l.yimg.com/a/i/ww/news/2010/02/22/fries_on_plate-pd.jpg more text http://l.yimg.com/this/is/another/path/to_this_image.jpg';

它将返回一个包含 3 个结果的数组。

使用 jQuery(因为你标记了它)你可以:

var $aTag;

for(i in result) {
    $aTag = $('<a><img src="/SomeDefaultImageThumb.jpg" /></a>').attr({'href': result[i]});
    $('body').append($aTag);
}

这会将新标签(在本例中)附加到正文。

编辑:使用您的示例,我在搜索查询周围添加了括号,并在替换字符串中使用 href="$1"引用它 -

在搜索字符串中添加了一组额外的括号。这将创建 $1 引用的“内存”组。

$("div.test").each(function() { 
    $(this).html($(this).html().replace(/(http:\/\/\S+(\.png|\.jpg|\.gif))/g, '<a href="$1"><img src="/SomeDefaultImageThumb.jpg" /></a>')); 
});

如果恶意代码可以隐藏在链接字符串中,则可能会产生安全隐患。但不确定。如果这是一个问题,应该有另一种方法来解决它。

编辑:从网站域中排除 href(假设它们是正在搜索的同一文本的一部分)。

var hostname = window.location.hostname.replace(/\./g,'\\.');
var re = new RegExp('(http:\\/\\/[^' + hostname + ']\\S+[\\.png|\\.jpg|\\.gif])','g');

$("div.test").each(function() {
    $(this).html($(this).html().replace(re, '<a href="$1"><img src="/SomeDefaultImageThumb.jpg" /></a>')); 
});

关于jQuery:找到所有图像链接并将它们转换为一些默认拇指?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2325307/

相关文章:

jquery - 在 jQuery 验证插件中自定义事件委托(delegate)

javascript - JQuery 在 div 中选择多个 img 之一

python - python 中正则表达式元组的 math.group 错误

css - 图像尺寸最小值 100%,以较大者为准

jquery - 在文件系统上运行的 HTML/Javascript 应用程序、安全问题

jquery - 无法在 if 语句中使用 $(this)

java - 将 XML Schema 模式转换为 Java 正则表达式

Python 正则表达式,用于拆分出现的两年的提及

python - Django ImageKit : How to rename uploaded images?

vb.net - 如何使用 VB.NET 在图像上书写?