我想使用javascript(jquery)和regex获取元标记数据。
以下是一些元标记。
<meta name="description" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics" />
<meta name="title" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics" />
我可以使用以下功能从这些表单中获取内容。
function getProductInfo(attr) {
var m = $("meta[name="+attr+"]");
var content = m.attr("content");
return content;
}
if(!title) var title = getProductInfo('title');
然而,有时会有不同形式的元标记,如
<meta property="title" content="....">
<meta property="og:title" content="....">
<meta name="title" description="....">
这就是我考虑使用正则表达式的原因。但我不知道。 请给我一个提示。感谢。
答案 0 :(得分:1)
$('meta').each(function() {
console.log($(this).attr('content'));
});
对于未排序的标签,不需要正则表达式。
function getProductInfo(attr) {
$('meta').each(function(index,tag) {
if($(tag)[0].attributes[0].textContent == attr) {
console.log($(tag)[0].attributes[0].textContent, $(tag)[0].attributes[1].textContent);
}
});
}
getProductInfo('title');
这将为您提供任何名称/属性都具有标题的内容。
答案 1 :(得分:1)
没有图书馆,纯粹的香草JS:
var meta = document.querySelectorAll('meta');
for(var i=0;i<meta.length;i++){
var content = meta[i].getAttribute('content'); /* here's the content */
}
<强> http://jsfiddle.net/JA9Yq/ 强>
jQuery的:
$('meta').each(function(index,tag){
var content = tag.getAttribute('content');
});
<强> http://jsfiddle.net/duL6E/ 强>
答案 2 :(得分:1)
也可以使用RegEx:
<meta[^>]+content="([^")]*)"
结果:
$matches Array:
(
[0] => Array
(
[0] => <meta name="description" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics"
[1] => <meta name="title" content="Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics"
)
[1] => Array
(
[0] => Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics
[1] => Amazon.com : Google Chromecast HDMI Streaming Media Player : Streaming Media Clients : Electronics
)
)
答案 3 :(得分:0)
可能是这个......
var desc = $('meta[name=description]').attr("content");
var title= $('meta[name=title]').attr("content");
var desc = $('meta[property=description]').attr("content");
var title= $("meta[property='og:title]").attr("content");
注意:显然它不喜欢冒号。我能够通过使用这样的双引号和单引号来修复它:
答案 4 :(得分:0)
这应该适用于我认为的所有元标记......
/\<meta.*?\>/
这是一个指向regexr的链接,这是一个很好的尝试工具
但最好使用@subZero建议而不是使用正则表达式,如果你不需要......我想。