【问题标题】:jQuery: parse HTML into textjQuery:将 HTML 解析为文本
【发布时间】:2014-01-08 16:53:05
【问题描述】:

我在字符串上使用substr() 以从消息中输出一组字符。我的问题是,如果字符串包含 HTML,我会得到文本中的标签。

是否可以在使用 substr() 之前解析 HTML 以仅从消息本身中提取文本?

示例 1:

var string = "Hi";

alert(string.substr(0, 7));

警告:

Hi


示例 2:

var string = "<br/>Hi";

alert(string.substr(0, 7));

警告:

&lt;br/&gt;Hi

【问题讨论】:

  • 如何填充string?您可以执行$(string).text() 之类的操作,但可能有一种更有效的方法不涉及jQuery
  • 看看这个问题的公认答案:stackoverflow.com/questions/10585029/…

标签: javascript jquery html


【解决方案1】:

使用jQuery.text()方法,可以只提取文本。

var str = "<br/>Hi"

$('<p>' + str + '</p>').text(); //Wrap your input in a p element first to ensure you get the text if your string isn't wrapped in HTML.

【讨论】:

    【解决方案2】:

    您可以通过正则表达式删除 html,查看答案here,您可以执行以下操作:

    String.prototype.removeHtml=function(){
      return this.replace(/(<([^>]+)>)/ig,"");
    }
    
    var string = "<br/>Hi";
    
    alert(string.removeHtml().substr(0, 7));
    

    小提琴: http://jsfiddle.net/fx3MJ/

    Remove HTML Tags in Javascript with Regex

    【讨论】:

      【解决方案3】:

      是的,使用这个:

      var string = "<br/>Hi";
      var stringStripped = string.replace(/(<([^>]+)>)/ig,"");
      alert(stringStripped);
      

      http://jsfiddle.net/hutchonoid/7T56N/

      【讨论】:

        【解决方案4】:

        你可以用正则表达式替换 html-tag

        var string = string.replaceAll("<[^>]*>", "");
        

        【讨论】:

          【解决方案5】:

          如果你的输入是在 DOM 中读取的,你可以使用 jQuery 来获取文本。示例:

          <p id="foo"><br />Hi</p>
          
          var string = $('#foo').text();
          
          alert(string.substr(0, 7)); //says "Hi"
          

          请参阅 jQuery 文档以获取 reference

          编辑: 如果您的输入来自其他地方,您仍然可以使用 jQuery,但可能会有更好的解决方案。

          var input = "<br />Hi";
          var fakeElement = $('<div>' + input + '</div>');
          
          var string = fakeElement.text();
          
          alert(string.substr(0, 7)); //says "Hi"
          

          【讨论】:

            【解决方案6】:

            如果要获取带有 HTML 标记的文本,请尝试使用 jQuery 中的 .innerHTML。

            <p id="foo"><br />Hi</p>
            


            $("#foo")[0].innerHTML;
            

            控制台:"&lt;br /&gt;Hi"

            【讨论】:

              【解决方案7】:

              您可以利用 jQuery 的 text() 函数:

               $('<div>').append('<br />hi').text();
              

              这将创建一个新元素,您可以将标记附加到该元素,然后使用text() 提取文本。有点迂回,但它有效。

              我会推荐一个正则表达式解决方案。

              【讨论】:

              【解决方案8】:

              试试这个:

              var string = "<br/Hi>".replace(/&#39;/g, '\'').replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"').replace(/&apos;/g, '\'');
              alert(string);
              

              【讨论】:

                【解决方案9】:

                试试这个

                var string = "<br/>Hi";
                
                alert($('<span>'+string+'</span>').text().substr(0, 7));
                

                FIDDLE

                【讨论】:

                  猜你喜欢
                  • 2013-08-18
                  • 2015-10-31
                  • 1970-01-01
                  • 1970-01-01
                  • 2017-11-28
                  • 2020-12-31
                  • 2015-09-19
                  • 1970-01-01
                  • 2021-08-30
                  相关资源
                  最近更新 更多