2012-11-07 163 views
3

我正在寻找一种方式来HTML格式的文本转换为纯文本,同时保持它的基本结构,也许会稍微调整了,所以:HTML转换为纯文本,并保持基本格式

<p>This is a paragraph.</p> 
<ol> 
    <li>List item 1.</li> 
    <li>List item 2.</li> 
</ol> 
<p>This is an <a href="www.google.com">anchor</a>.</p> 

变为:

这是一个段落。

  • 列表项1.
  • 列表项2.

这是一个锚(www.google.com)。

关于如何有效实现大量HTML格式模板的任何想法?

  • 请注意,结构外最重要的部分是保持锚点。
+0

您应该考虑使用降价或其他轻量级标记语言 – Nicolas

+0

这是目前非选择。我无权修改这些内容,但我需要以纯文本的形式进行修改。 :/ – rebelliard

+0

随着[Pandoc(http://johnmacfarlane.net/pandoc/try)(哈斯克尔),你可以轻松地HTML源转换为标记语言。 – Nicolas

回答

3

使用基于文本的浏览器,如lynx,并将其输出到标准输出。我不知道它会满足您的所有的调整,需求,但它是一个非常快速和容易的开始

lynx -crawl -dump http://stackoverflow.com/questions/13279364/convert-html-to-plain-text-and-keep-basic-formatting

(实际上,我希望你的列表是

1. List item 1. 
2. List item 2. 

,因为它的一个有序列表)

编辑:实际上看起来更到您的实际使用情况下,它完美的作品:

> echo '<p>This is a paragraph.</p> 
<ol> 
    <li>List item 1.</li> 
    <li>List item 2.</li> 
</ol> 
<p>This is an <a href="http://www.google.com">anchor</a>.</p>' | lynx -stdin -dump 

成为

This is a paragraph. 
    1. List item 1. 
    2. List item 2. 

    This is an [1]anchor. 

References 

    1. http://www.google.com/ 
+0

这实际上看起来不错,除了丢失的锚点。现在我需要找出是否有可能用l to将锚点旁边的锚点附加到锚定文本中。 – rebelliard

+0

顺便说一句,你是正确的,那是一个有序的列表,但我想强调这并不重要。 – rebelliard

+0

我只是用一个实际的例子做了一个编辑(它希望http://在链接中,否则它假设它是本地的),其中包括链接。 '-crawl'参数隐藏了链接。 – Claude