2016-06-25 3 views
-1

텍스트 서식 지정에 WYSIWYG을 사용하고 있습니다. 어느 시점에서 나는 텍스트를 잡고 텍스트 형식으로 이메일로 보내야합니다. 그래서 줄 바꿈과 단락을 유지하면서 모든 HTML 태그를 제거하려고합니다.HTML을 텍스트로 출력

또한 글 머리 기호 목록을 유지하고 글 머리 기호를 "-"로 바꾸기로 결정했습니다.

var txt = $('#myEditor').summernote('code') 
      .replace(/<\/p>/gi, "\n") 
      .replace(/<br\/?>/gi, "\n") 
      .replace(/<li\/?>/gi, " \n- ") 
      .replace(/<ol\/?>/gi, " \n- ") 
      .replace(/<\/?[^>]+(>|$)/g, ""); 

한 가지 예외가 있지만 정상적으로 작동하는 것으로 보입니다. 다음 HTML 코드 :

덩어리 마지막 목록 항목과 단락 라인 : 여기

일부 데모 문장.

  • 순서없는 목록 항목 1

  • 순서없는 목록 항목이 또 하나의 문장을 여기.

  • 정렬 된 목록 항목

  • 정렬 된 목록 항목이

$ ('#의 명이 MyEditor') summernote ('코드') 반환합니다.

<p>Some demo sentence here.</p><ul><li>Unordered list item 1</li><li>Unordered list item 2<br></li></ul><p>One more sentence here.<br></p><ol><li>Ordered list item</li><li>Ordered list item two<br></li></ol> 
+0

'$ ('# myEditor'). summernote ('code')'return? – guest271314

+0

@ guest271314 내 게시물을 업데이트했습니다. – santa

+0

각 요소 내의 텍스트에 대한 예상 결과가 별도의 줄에 배치됩니까? – guest271314

답변

-1

당신은 lynx를 사용하여 시도 할 수 , 본질적으로 수행하려는 작업을 수행하는 텍스트 기반 웹 브라우저 : 웹 페이지를 텍스트로 표시합니다.

Lynx에서 p을 눌러 페이지를 텍스트 파일로 "인쇄"할 수 있습니다. 예상되는 결과는 별도의 줄에 배치되는 $("#myEditor").summernote("code")에 의해 반환 된 각 요소의 텍스트 콘텐츠의 경우

+0

두 출력이 모두 필요합니다. HTML 전자 메일과 텍스트 메시지 용 일반 텍스트 버전을 대신 사용합니다. – santa

0

, 당신은 .contents(), .map(), .trim() 각 요소의 "\n" 다음 값을 연결하는 데 사용할 수있는 .nodeValue 또는 .textContent

var htmlStr = "<p>Some demo sentence here.</p><ul><li>Unordered list item 1</li><li>Unordered list item 2<br></li></ul><p>One more sentence here.<br></p><ol><li>Ordered list item</li><li>Ordered list item two<br></li></ol>"; 
 

 
var res = ""; 
 

 
$(htmlStr).contents().map(function(i, el) { 
 
    var curr = (el.nodeValue || el.textContent).trim(); 
 
    if (curr.length) res += curr + "\n" 
 
}); 
 

 
console.log(res); 
 

 
$("pre").text(res);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<pre></pre>

관련 문제