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));
警告:
<br/>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;
控制台:"<br />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(/'/g, '\'').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '\'');
alert(string);
【讨论】:
【参考方案9】:试试这个
var string = "<br/>Hi";
alert($('<span>'+string+'</span>').text().substr(0, 7));
FIDDLE
【讨论】:
以上是关于jQuery:将 HTML 解析为文本的主要内容,如果未能解决你的问题,请参考以下文章
通过 jQUERY 将 JSON 数据从 URL 解析为 HTML