1

使用 curl 解析 xml 提要后,我的页面上有以下格式错误的 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>

where<link>没有结束标记并且最后一串数字动态变化,我需要删除这些格式错误的元素,它是第一个完全保留 href 的文本节点,所以我希望能够搜索以 http:/ 开头的字符串/example.com/cp/? 那只是链接的直接孩子,我希望像这样实现这一点:

jQuery('<link>:regex(^[*])').remove();

使用james padolsey 的正则表达式或任何其他方法,尝试了以下但无济于事:

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

4

2 回答 2

1

像这样的东西-

$('.rssfeed').contents().filter(function(){
  return !$(this).is('a,h1,p');
}).remove();

演示--> http://jsfiddle.net/kYwk9/4/

于 2013-05-23T15:43:23.270 回答
0

这将遍历所有 rssfeed div 并将它们替换为 div 并仅保留有效的子标签:

$(".rssfeed").each(function() {
    $(this).replaceWith($("<div></div>").addClass("rssfeed").append($("> *:not(link)", $(this))));
    });

查看更新的 jsFiddle:http: //jsfiddle.net/qSV4B/

于 2013-05-23T15:50:33.843 回答