如何使用split但跳过html/javascript/php和其他内部标签? [英] How can I use split but skip html/javascript/php and other inner tags?

查看:97
本文介绍了如何使用split但跳过html/javascript/php和其他内部标签?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的代码在X个博客文章的单词后插入HTML内容.该代码有效,但是存在一个问题:它会剥离途中找到的所有内容,甚至包括javascript,html等.

My code inserts a HTML content after X number of words of a blog post. The code works, but there is a problem: It strips everything it finds on the way, even javascript, html, whatever.

if (index == 2)计算代码的前两个单词,然后在这些单词之后插入HTML(在这种情况下为图像),但不区分html或纯文本. 我在这里找到一个话题,说我应该使用这样的东西:

The if (index == 2) counts the first two words of the code, then insert the HTML (In this case an image) after those words, but it makes no distinction of html or pure text. I found a topic here saying I should use something like this:

result = subject.match(/<\s*(\w+\b)(?:(?!<\s*\/\s*\1\b)[\s\S])*<\s*\/\s*\1\s*>|\S+/g);

但是我不知道如何实现它.

But I don't know how to implement it.

基本上,我需要用代码来计算每个单词,但是要跳过<\ " " ? --> <!-- />

Basically, I need the code to count every single word, but skip any tags like <\ " " ? --> <!-- />

提琴: https://jsfiddle.net/kvenmL07/

HTML:

 <div style="width:450px; margin-left:auto; margin-right:auto" class="newsitem_text">
    <div style="width:350px; margin-left:auto; margin-right:auto">

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec pellentesque urna eu pulvinar maximus. Sed elit nunc, vestibulum ut eros vitae, pellentesque rhoncus ipsum. In et metus non diam porttitor maximus iaculis nec lectus. Quisque sodales scelerisque auctor. Nam rutrum venenatis eros, eu condimentum erat placerat ut. Pellentesque sed tempus sem, eu viverra ipsum. Vestibulum nec turpis convallis, dapibus massa vitae, posuere mauris. Suspendisse mattis tincidunt lorem. Aliquam erat volutpat. Nullam at tincidunt erat, maximus laoreet ipsum.

    Quisque nunc neque, semper tincidunt placerat eget, blandit a ante. Suspendisse pulvinar, velit eu ultrices pulvinar, lacus sapien tincidunt ipsum, eget sollicitudin mauris eros molestie ex. Etiam quis orci dui. Phasellus vestibulum mollis molestie. Nam condimentum ornare nisl, sed finibus risus tempus vel. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Interdum et malesuada fames ac ante ipsum primis in faucibus.

    Vestibulum eget ullamcorper lorem. Aliquam mollis elit in sem dapibus dapibus. Proin vel massa a arcu dictum tincidunt in ut ante. Sed feugiat tempus dictum. Praesent in leo ullamcorper, sodales turpis et, vehicula tellus. Duis pellentesque dui ac turpis tristique imperdiet. Sed sed orci lectus.

    Suspendisse non egestas sem, sed tincidunt sem. Etiam laoreet dui sem. Mauris hendrerit massa tempus, euismod arcu sit amet, eleifend quam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus id fringilla mauris. Cras dapibus non lacus at finibus. Nullam vitae sagittis neque. Mauris libero velit, interdum non vehicula non, lacinia non augue. Maecenas elementum lacinia interdum.

    Morbi eget mollis nisl. Integer accumsan condimentum tellus, lacinia pellentesque urna volutpat a. Nullam semper sem et erat commodo sollicitudin. Proin rhoncus felis eu aliquam venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla pretium velit eu molestie condimentum. Vestibulum vitae velit mi. Integer nec leo quam. Nam pulvinar ligula congue consectetur tristique. Donec placerat faucibus diam sit amet fermentum. Ut id pellentesque risus. Nunc lacus orci, rhoncus ut risus sed, mattis posuere tellus. Nulla pellentesque eros sed neque consectetur dictum.</div></div>

jQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<script type="text/javascript">
 jQuery(function($) {

var wordList = $(".newsitem_text").html().split(' ');


var newHtml = ' ';

$.each(wordList, function(index, word){
  newHtml += ' ' + word;
  if (index == 2) {
    newHtml += '<img src="https://www.google.com.br/logos/doodles/2015/adolphe-saxs-201st-birthday-6443879796572160.2-res.png" />'     
  }        
})
;

$(".newsitem_text").html(newHtml);

});


</script>

推荐答案

如果使用.text()而不是.html(),它将不会显示任何标签.例如:

If you use .text() instead of .html() it will not show any of the tags.. for instance:

    <div id="test" class="test2">
       <span>this is a test</span>
    </div>

然后

var mytext = $("#test").text();

mytext等于这是一个测试";

mytext would equal "this is a test";

这篇关于如何使用split但跳过html/javascript/php和其他内部标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆