在使用curl解析xml Feed后,我的页面上出现了以下格式的html:
<div class="rssfeed">
<link>
http://example.com/cp/?(string_of_numbers)
<a href="http://example.com/cp/?(same_string_of_numbers)">example</a>
</div>
其中<link>
没有结束标记,并且最后一串数字动态变化,我需要删除这些形成错误的元素,它首先在文本节点之前完全保留href所以我希望能够搜索对于以http:// example.com/cp/开头的字符串?这只是链接的直接孩子,我希望这样做:
jQuery('<link>:regex(^[*])').remove();
使用james padolsey's regex或任何其他方法,尝试了以下但无济于事:
var reg = /\<link>.*\<a/;
jQuery(".rssfeed .rssfeed <link>").filter(function(){
return jQuery(this).text().match(reg);
}).html(function(i,h) {
var nr = h.match(reg);
jQuery(this).after(nr[0]);
return h.replace(reg,'');
});
和此:
// Get the product number that lies between [ ] marks from all div elements
jQuery('.rssfeed .rssfeed:contains('<link>'+*+')').html(function() {
//Look for the wildcard string and save it to a variable. how can I search within the string?!
var $finalstring = jQuery(this).search('<link>'+*+');
//remove it from the string
jQuery(this).replace($finalstring, '');
});
但似乎没有任何效果。 有人可以帮忙吗? 更新: jsfiddle
答案 0 :(得分:1)
像这样 -
$('.rssfeed').contents().filter(function(){
return !$(this).is('a,h1,p');
}).remove();
答案 1 :(得分:0)
这将循环遍历所有rssfeed div并将其替换为div并仅保留有效的子标记:
$(".rssfeed").each(function() {
$(this).replaceWith($("<div></div>").addClass("rssfeed").append($("> *:not(link)", $(this))));
});
请参阅更新的jsFiddle:http://jsfiddle.net/qSV4B/