Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 查找html字符串jquery解析器(解析链接和图像)_Javascript_Jquery_Html_Parsing_Html Parsing - Fatal编程技术网

Javascript 查找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字符串jquery解析器(解析
链接和
图像)或解析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 sdsssssssssssssssssssdsdsdsds

sdssdd 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 sdsssssssssssssssssssdsdsdsds

sdssdd 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
属性的值吗?如果是,则为