2011-07-27 18 views
5

Tôi muốn tách thẻ khỏi html, nhưng vẫn giữ nguyên ngắt dòng.Thẻ dải có javascript và xử lý ngắt dòng

Tôi muốn hành vi như sao chép văn bản trong trình duyệt và dán vào notepad.

Ví dụ, một mã mà chuyển đổi:

  • <div>x1</div><div>x2</div> để x1\nx2
  • <p>x1</p><p>x2</p> để x1\nx2
  • <b>x1</b><i>x2</i> để x1x2
  • x1<br>x2 để x1\nx2

Xóa tất cả các thẻ không hoạt động (/ <. *?>/G). Đồng thời tạo một dummy < div> và cài đặt là innertHTML và đọc nó là textContent sẽ xóa ngắt dòng.

Bất kỳ trợ giúp nào?

Trả lời

2

Hãy thử:

function strip_tags(str){ 
    return str 
      .replace(/(<(br[^>]*)>)/ig, '\n') 
      .replace(/(<([^>]+)>)/ig,''); 
} 

var str = '<div>x1</div><div>x2</div><br>'+'<p>x1</p><p>x2</p>'+'<b>x1</b><i>x2</i>'; 

này sẽ tước các thẻ và thay thế <br /> hoặc <br> với dòng mới, nhưng thêm dòng mới cho các yếu tố khối đòi hỏi khá nhiều thời gian để tìm ra một giải pháp.

Here is a demo

3

Công việc này giúp bạn như thế nào? Điều này sẽ thay thế mọi lần xuất hiện của <br>, </div></p> với số \n, sau đó loại bỏ các thẻ còn lại. Của nó ngốc nghếch, nhưng ít nhất là một khởi đầu.

fixed = text_to_fix.replace(/<(?:br|\/div|\/p)>/g, "\n") 
      .replace(/<.*?>/g, ""); 

Điều này không hiệu quả đối với tất cả HTML. Chỉ các thẻ bạn đã đề cập.

+0

div, p và br là ví dụ về nhiều thẻ gây ra ngắt dòng (hr, li, tr, ...) –