jQuery:将 HTML 解析为文本

Posted

技术标签:

【中文标题】jQuery:将 HTML 解析为文本【英文标题】:jQuery: parse HTML into text 【发布时间】: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 看看这个问题的公认答案:***.com/questions/10585029/… 【参考方案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() 提取文本。有点迂回,但它有效。

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

【讨论】:

使用jQuery.append() here is wildly inefficient compared to string concatenation 有趣,我得把它藏起来!【参考方案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

【讨论】:

以上是关于jQuery:将 HTML 解析为文本的主要内容,如果未能解决你的问题,请参考以下文章

将html解析为jQuery对象的正确方法

通过 jQUERY 将 JSON 数据从 URL 解析为 HTML

jQuery 将 Html 转换为文本并返回

使用 jQuery 1.5 将请求作为 jsonp 发送,将响应解释为文本

jquery将HTML代码转换为纯文本[重复]

jQuery文本值相关操作