2012-12-17 62 views
26

tôi có mã này:thẻ Remove HTML từ một chuỗi javascript

var content = "<p>Dear sms,</p><p>This is a test notification for push message from center II.</p>"; 

và tôi muốn loại bỏ tất cả <p></p> thẻ từ chuỗi trên. Chỉ muốn hiển thị các giá trị chuỗi mà không cần thẻ html như:

"Dear sms, This is a test notification for push message from center II." 
+0

Tôi không nghĩ nó trùng lặp. vì nó cũng được gắn thẻ dưới Javascript. – SaidbakR

+0

Tôi giữ chuỗi html đó trong một biến thể javascript. Tôi muốn xóa các thẻ đó khỏi biến đó – krrr25

+0

Sao chép điều này: http://stackoverflow.com/questions/822452/strip-html-from-text-javascript – Cerbrus

Trả lời

63

Tại sao không chỉ để cho jQuery làm điều đó?

var content = "<p>Dear sms,</p><p>This is a test notification for push message from center II.</p>"; 

var text = $(content).text(); 
+0

điều này thật tuyệt, +1 – defau1t

+4

Hãy nhớ rằng nếu 'nội dung' có thứ gì đó như <div> thì nó sẽ trở thành thẻ sau khi mã này chạy – cdmckay

+1

Điều này không xóa'
' –

4

Bạn có thể sử dụng jQuery text() để có được đồng bằng văn bản without thẻ html.

Live Demo

withoutP = $(content).text() 
9

Sử dụng javascript đơn giản:

content = content.replace(/(<p>|<\/p>)/g, ""); 
+0

Điều gì về khoảng trắng và/hoặc thuộc tính? Ví dụ '

' –

+1

Trả lời câu hỏi chính xác OP, nhưng nếu thẻ có thuộc tính regex sẽ cần phải là '/ (] *> | <\/p>)/g' – HBP

+0

Ở đây, biến dường như được tạo ra và tôi nghĩ rằng rất dễ dàng để biết những yếu tố chúng ta phải loại bỏ ... Thậm chí, nếu nó phức tạp hơn một chút, tôi nghĩ rằng phương pháp này sẽ hoạt động: đó là cơ sở cho câu hỏi được hỏi và có thể dễ dàng thích nghi sau. –

1
var content = "a<br />"; 
var withoutP = $(content).text() 
alert(withoutP) 

Cái này không làm việc cho các .text() giải pháp.

24

Đây là giải pháp của tôi,

function removeTags(){ 
    var txt = document.getElementById('myString').value; 
    var rex = /(<([^>]+)>)/ig; 
    alert(txt.replace(rex , "")); 

} 
+3

cảm ơn người đàn ông, đây là câu trả lời hay nhất, vì javascript thuần túy và regexp của bạn xử lý tất cả các thẻ html – jipipayo

+0

Cải tiến cho regex này là: (<([^>] +)>) | (< ([^>] +) >) Thao tác này sẽ xóa thẻ html chuẩn cũng như bất kỳ thẻ thoát nào. – dukedevil294

+0

Vui lòng không xử lý HTML bằng cách sử dụng cụm từ thông dụng. Đó là một sai lầm và bạn có thể sẽ bị đốt cháy nặng vì nó. HTML không phải là một ngôn ngữ thông thường và một biểu thức chính quy, thậm chí một nghìn ký tự, không đủ cho nó. Bạn cần một trình phân tích cú pháp thực, hoặc sử dụng các chức năng của trình duyệt/DOM. Tôi là kẻ tấn công có thể dễ dàng nhận HTML qua cả hai ví dụ này. – AndrewF

0

Nơi hidden element trong đánh dấu, hoặc tạo ra nó từ jQuery. Sử dụng mã này để có được văn bản đơn giản mà không biến chứng với các thẻ chưa đầy đủ, &lt;, vv

content = $(hiddenElement).html($(hiddenElement).html(content).text()).text(); 
0

Trên approch không được làm việc cho tôi. vì vậy tôi có một giải pháp thay thế để giải quyết issue` này

var regex = "/<(.|\n)*?>/"; 
var originaltext = "1. Males and females were compared in terms of time management ability. <br><br>The independent variables were the people in the study.<br><br> Is this statement correct"; 
var resultText = body.replace(regex, ""); 
console.log(result); 
0

Sử dụng regex:

var cleanContent = content.replace(/(<([^>]+)>)/ig,"");

-3
function htmlTagremove(text) { 

    var cont = document.createElement('div'), 
    cont.innerHTML=text; 

    return $(cont).text(); 

} 

htmlTagremove('<p><html>test'); 
1

này được kiểm tra ký tự đặc biệt

var $string = '&lt;a href=&quot;link&quot;&gt;aaa&lt;/a&gt;'; 
 
var $string2 = '<a href="link">aaa</a>'; 
 
var $string3 = 'BBBBB'; 
 
var $string4 = 'partial<script'; 
 
var $string5 = 'has spaces'; 
 

 
function StripTags(string) { 
 

 
    var decoded_string = $("<div/>").html(string).text(); 
 
    return $("<div/>").html(decoded_string).text(); 
 

 
} 
 

 
console.log(StripTags($string)); 
 
console.log(StripTags($string2)); 
 
console.log(StripTags($string3)); 
 
console.log(StripTags($string4)); 
 
console.log(StripTags($string5));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Các vấn đề liên quan