jQuery:将HTML解析为文本

时间:2014-01-08 16:53:06

标签: javascript jquery html

我在字符串上使用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

9 个答案:

答案 0 :(得分:4)

使用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.

答案 1 :(得分: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

答案 2 :(得分:2)

是的,使用这个:

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

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

答案 3 :(得分:1)

如果您在DOM中读取了输入,则可以使用jQuery来获取文本。示例:

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

var string = $('#foo').text();

alert(string.substr(0, 7)); //says "Hi"

请参阅reference的jQuery文档。

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

var input = "<br />Hi";
var fakeElement = $('<div>' + input + '</div>');

var string = fakeElement.text();

alert(string.substr(0, 7)); //says "Hi"

答案 4 :(得分:1)

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

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

答案 5 :(得分:1)

如果你想获得带有HTML标签的文本,请尝试使用jQuery中的.innerHTML。

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


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

控制台:"<br />Hi"

答案 6 :(得分:0)

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

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

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

我建议使用正则表达式解决方案。

答案 7 :(得分:0)

试试这个:

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

答案 8 :(得分:0)

试试这个

var string = "<br/>Hi";

alert($('<span>'+string+'</span>').text().substr(0, 7));

FIDDLE