如何将纯文本转换为HTML(最好使用Perl)?

5

有没有一种方法可以将纯文本文件转换为简单的HTML?

一些“高级”功能会很棒:

  • 识别超链接。
  • 识别(制表符分隔的)表格。

更新

我刚刚发现了这个HTML::FromText。正在检查它是否符合我的需求...


不超过20行Perl代码。 - Paulo Scardine
3个回答

4

Text::Markdown

因为Markdown是面向一般文本到HTML转换的最佳标记语言,所以Stack Overflow已经使用了它。命名链接在编辑帮助中有解释。


如何在Markdown中添加表格?我是要将整个文件读入一个字符串并一次性传递,还是逐行传递呢? - David B
表格不是使用 Markdown 语法,而是使用 MultiMarkdown 语法 - daxim

3

尝试使用HTML::TextToHTML

从命令行执行:

txt2html I<arguments>

从脚本中:

use HTML::TextToHTML;

# create a new object
my $conv = new HTML::TextToHTML();

# convert a file
$conv->txt2html(infile=>[$text_file],
                 outfile=>$html_file,
                 title=>"Wonderful Things",
                 mail=>1,
  ]);

# reset arguments
$conv->args(infile=>[], mail=>0);

# convert a string
$newstring = $conv->process_chunk($mystring)

谢谢,这非常有帮助。我还有一个问题:如何控制超链接的名称?目前它只显示完整的URL。我希望所有链接在文本中都简单地显示为“链接”。我能做到吗?我读过链接字典,但并没有真正理解它。我不介意通过某种方式修改文本文件来明确执行此操作。 - David B
几乎忘记了:+1。但我必须承认我无法让字典工作,所以我可能会使用MultiMarkdown。 - David B
我也无法使链接字典正常工作。我认为任何Markdown解决方案都可能是正确的选择。为我的答案辩护,您确实要求将文本->HTML而非标记文本->HTML。 - Pedro Silva

0
你可以使用带有-dump选项的lynx来实现这一点:
use File::Temp;

sub html2Txt {
    my $html = shift;
    my $html_file = File::Temp->new(SUFFIX => '.html');
    print $html_file $html;
    close $html_file;
    return scalar `lynx -dump $html_file 2> /dev/null`;
}

print html2Txt '<h1>Hi there!</h1> Testing <p>Testing</p>';

问题是将文本转换为HTML,而不是将HTML转换为文本。 - Citizen Kepler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接