2011-07-27 40 views
5

我想从html中去除标签,但保留换行符。使用javascript处理换行标签和处理换行符

我想要在浏览器中复制文本并将其粘贴到记事本中的行为。

例如,代码转换:

  • <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>x2x1\nx2

删除所有标签不起作用(/ <。*?>/g)。 同时创建一个虚拟< div>并将其设置为innertHTML并读取它的textContent将删除换行符。

任何帮助?

回答

2

尝试:

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>'; 

这将剥去标签,并用新的更换线或<br /><br>,但添加新的线块元素需要相当长的一段时间来了一个解决方案。

Here is a demo

3

这项工作如何为您服务?这将用\n代替<br>,</div></p>的每次出现,然后剥离其余标记。它的愚蠢,但至少有一个开始。

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

这并不适用于所有的HTML工作,但是。只是你提到的标签。

+0

DIV,P和Br只是众多标签的例子,导致线路中断(小时,李,TR,...) –