Javascript 查找html字符串jquery解析器(解析链接和图像)
我正在寻找html字符串jquery解析器(解析Javascript 查找html字符串jquery解析器(解析链接和图像),javascript,jquery,html,parsing,html-parsing,Javascript,Jquery,Html,Parsing,Html Parsing,我正在寻找html字符串jquery解析器(解析链接和图像)或解析html字符串中所有链接和图像的代码(html字符串可以很大)。 示例: 输入: (或者如果您有其他更好的方式) 谢谢你可以像这样简单地对他们说: function parseLinksAndImages(htmlString){ ......................... ........................ return linksAndImagesArrMultiDimensial; } 你可以简单地像
链接和
图像)或解析html字符串中所有链接和图像的代码(html字符串可以很大)。
示例:
输入:
(或者如果您有其他更好的方式)
谢谢你可以像这样简单地对他们说:
function parseLinksAndImages(htmlString){
.........................
........................
return linksAndImagesArrMultiDimensial;
}
你可以简单地像这样对待他们:
function parseLinksAndImages(htmlString){
.........................
........................
return linksAndImagesArrMultiDimensial;
}
假设您的字符串是有效的HTML,您可以执行以下操作:
function parseLinksAndImages(htmlString){
.........................
........................
return linksAndImagesArrMultiDimensial;
}
试试看:(从原始版本更新为使用.each()
而不是.map()
,以避免使用.split()
)
编辑: 对于注释中的存储,可以将
结果
设置为javascript对象,并将数组存储在链接
和图像
键下
$container.find('a[href],img').each(function() {
if(this.tagName.toUpperCase() == 'A') {
result.push([this.tagName,this.innerHTML,this.href]);
} else {
result.push([this.tagName,this.src,this.alt]);
}
});
var string=“sdssdd sdsssssssssssssssssssdsdsdsdssdssdd sd”;
var$container=$('').html(字符串);
//将结果存储在javascript对象中
var结果={
链接:[],
图片:[]
};
$container.find('a[href],img')。每个(函数(){
如果(此.tagName.toUpperCase()=='A'){
result.links.push([this.tagName,this.innerHTML,this.href]);
}否则{
result.images.push([this.tagName,this.src,this.alt]);
}
});
警报(result.links);
警报(结果、图像);
如果愿意,您可以执行两个单独的循环。不确定哪一个会表现更好。
假设您的字符串是有效的HTML,您可以执行以下操作:
function parseLinksAndImages(htmlString){
.........................
........................
return linksAndImagesArrMultiDimensial;
}
试试看:(从原始版本更新为使用.each()
而不是.map()
,以避免使用.split()
)
编辑: 对于注释中的存储,可以将
结果
设置为javascript对象,并将数组存储在链接
和图像
键下
$container.find('a[href],img').each(function() {
if(this.tagName.toUpperCase() == 'A') {
result.push([this.tagName,this.innerHTML,this.href]);
} else {
result.push([this.tagName,this.src,this.alt]);
}
});
var string=“sdssdd sdsssssssssssssssssssdsdsdsdssdssdd sd”;
var$container=$('').html(字符串);
//将结果存储在javascript对象中
var结果={
链接:[],
图片:[]
};
$container.find('a[href],img')。每个(函数(){
如果(此.tagName.toUpperCase()=='A'){
result.links.push([this.tagName,this.innerHTML,this.href]);
}否则{
result.images.push([this.tagName,this.src,this.alt]);
}
});
警报(result.links);
警报(结果、图像);
如果愿意,您可以执行两个单独的循环。不确定哪一个会表现更好。
+1!要添加一点“背景故事”,您可以使用原始问题中的字符串,假设它位于变量中,如
htmlStuff
,将其转换为可导航元素,并对您正在查找的内容进行操作,如:jQuery(htmlStuff).find('a').each(linkFunc).end().find('img').each(imgFunc)代码>感谢您的回答,在您的解决方案中,字符串应该迭代2次-只能在1次迭代中完成?@Yosef:对什么/哪个标记进行相同的迭代?value+href+src+alt-如果可能的话,使用jquery。我还需要解析外部html字符串,而不是网页。函数parseLinksAndImages($htmlString){..代码..返回linksAndImages;}+1!要添加一点“背景故事”,您可以使用原始问题中的字符串,假设它位于变量中,如htmlStuff
,将其转换为可导航元素,并对您正在查找的内容进行操作,如:jQuery(htmlStuff).find('a').each(linkFunc).end().find('img').each(imgFunc)代码>感谢您的回答,在您的解决方案中,字符串应该迭代2次-只能在1次迭代中完成?@Yosef:对什么/哪个标记进行相同的迭代?value+href+src+alt-如果可能的话,使用jquery。我还需要解析外部html字符串,而不是网页。函数parseLinksAndImages($htmlString){..code…return linksAndImages;}由于它看起来非常有效,您的函数是像它看起来一样对字符串进行1次迭代,还是查找函数对标记进行单独迭代,然后对img标记进行单独迭代?@Yosef-发生的事情是它们在内存中被转换为DOM元素(存储在$container中)。.find()
只是一个典型的jQuery.find()
。它的性能将取决于字符串的长度和浏览器,但总体来说应该非常快。@Yosef…还有,当您说“(如果值为空,则不返回此类链接)”时,我假设您指的是“内容”或者你是指
元素的href
属性的值吗?如果是,它应该会有一点变化。请参阅更新..关于查找:使用查找函数使用2个标记进行查找-我的问题jquery find如何工作-选项1::迭代一次字符串并查找2个标记或选项2::首次查找查找在她完成查看字符串内部后,她再次使用字符串进行操作。(Html字符串也可能非常大。)使用多数组分别获取链接和图像是否可以改进您的代码?我的代码编辑建议:result=[];……如果….result['links'].push([this.tagName,this.innerHTML,this.href]);否则结果['images'].push([this.tagName,this.src,this.alt]);感谢它看起来非常有效的方式,您的函数是像它看起来一样对字符串进行1次迭代,还是find函数对标记进行单独的迭代,然后对img标记进行单独的迭代?@Yosef-发生的事情是,它们被转换为内存中的DOM元素(存储在$container中)。.find()
只是一个典型的jQuery.find()
。它的性能将取决于字符串的长度和浏览器,但总体来说应该非常快。@Yosef…还有,当您说“(如果值为空,则不返回此类链接)”时,我假设您指的是“内容”您是指
元素的href
属性的值吗?如果是,则为