【问题标题】:What's a good syntax for an HTML link markdown to make internal links easier?什么是 HTML 链接降价的好语法以使内部链接更容易?
【发布时间】:2009-10-09 07:38:22
【问题描述】:

我想创建一个好的语法,以便更轻松地链接到内部事物,有点像 Wiki,所以也许我认为用户可以使用类似的东西:

Bah bah bah reference: [[a]]

它会将其转换为 HTML:

Bah bah bah reference: <a href="..../id=a">title</a>

但我担心感叹词和安全问题。什么是好的语法可供选择(可能是 [[]] 或其他),什么是安全的正则表达式?

【问题讨论】:

    标签: html markdown


    【解决方案1】:

    不要重新发明轮子:Text::Markdown

    【讨论】:

    • 我知道 Markdown/等。我实际上正在考虑在此之上增加一层以使某些链接更容易,例如,使用密钥链接到内部站点,而不是自己解析所有内容,或者链接到带有快捷方式的标签列表。
    【解决方案2】:

    虽然 Sinan 使用现有语法(例如 Markdown)的想法很好,但这种方法的可行性取决于您的具体情况。您没有告诉我们足够多的信息来获得非常有用的回复。您是白手起家,还是继承了大量现有文档,需要进行昂贵的转换过程,更不用说员工再培训了?

    如果是后者,有时最好通过考虑短期解决方法和长期策略来解决问题。短期解决方法 - 某种与您的问题中提出的完全一样的本土语法 - 会很丑陋,可能会在这里和那里造成麻烦,但它可以完成工作。例如,我们的组织有一大堆最终为 HTML 页面提供内容的 Word 文档。在这些 Word 文件中,工作人员使用这样的方法来创建链接并进行我们的解析代码处理的一些其他声明:##some_link##。失败的方式有很多,但在我们制作的内容类型中,这种情况很少发生。部分出于这个原因,很难对将内容迁移到更强大的系统的长期战略产生很大的热情。我的预期是这样的迁移将会发生,但这是出于更大的考虑,而不是我们 kludgy ##foo## 标记设备的限制。

    更新:

    根据您的其他 cmets,听起来您将拥有一个链接列表,您希望您的用户能够使用短 ID 快速添加这些链接。因此,这些链接将在某个地方定义,比如 Perl 哈希。您可以使用此哈希来防止无效条目。例如:

    use strict;
    use warnings;
    
    my %approved_links = (
        so_perl => 'http://stackoverflow.com/questions/tagged/perl',
        so_ruby => 'http://stackoverflow.com/questions/tagged/ruby',
    );
    
    my $regex = qr/ \[\[ ([^\]]+) \]\] /x;
    
    while (<DATA>){
        die "Danger: $_\n" if map {
            exists $approved_links{$_} ? () : ($_)
        } /$regex/g;
        s/$regex/$approved_links{$1}/g; # Not complete, but you get the idea.
        print;
    }
    
    __DATA__
    Some text [not an id] [[so_perl]] more [[so_ruby]] more..
    [[so_perl]] blah [[so_ruby]] blah
    [[bad id!!]]
    

    【讨论】:

    • 这是一个主要是文本摘要部分,我有一个基于树的解析器,可以验证并剥离 HTML(第 3 方),但我希望功能允许一些内部链接,例如维基百科的带有 [[Article Name]] 的语法会自动翻译成链接。我想这样做,同时确保人们不能在里面放任何危险的东西..
    【解决方案3】:

    类似于TextileCreole?为什么不使用现有的实现?

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2014-11-07
      • 1970-01-01
      • 2019-07-17
      • 1970-01-01
      • 2018-12-15
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多