我想创造一个良好的语法使其更容易链接到内在的东西,有点像一个Wiki,所以也许我想用户可以使用这样的:什么是HTML链接降价的好语法,使内部链接更容易?
Bah bah bah reference: [[a]]
而且,它还将其转换到HTML:
Bah bah bah reference: <a href="..../id=a">title</a>
但我担心感叹词和安全问题。什么是一个好的语法来选择(也许[[]]或其他),什么是安全的正则表达式?
我想创造一个良好的语法使其更容易链接到内在的东西,有点像一个Wiki,所以也许我想用户可以使用这样的:什么是HTML链接降价的好语法,使内部链接更容易?
Bah bah bah reference: [[a]]
而且,它还将其转换到HTML:
Bah bah bah reference: <a href="..../id=a">title</a>
但我担心感叹词和安全问题。什么是一个好的语法来选择(也许[[]]或其他),什么是安全的正则表达式?
尽管思南使用现有语法(如Markdown)的想法很好,但这种方法的可行性取决于您的具体情况。你没有告诉我们足够的回应。你是从一个空白的石板开始,还是继承了大量现存文件,这需要昂贵的转换过程,更不用说员工再培训了?
如果是后者,有时最好通过考虑短期解决方法和长期策略来解决问题。短期的解决方法 - 就像您提出的问题中提出的某种本土语法 - 会很丑陋,可能会引起麻烦,但它可以完成工作。例如,我们的组织有大量的Word文档,最终为HTML页面提供内容。在这些Word文件中,工作人员使用这种方法来创建链接,并制作一些我们的解析代码处理的其他声明:##some_link##
。有很多方法会失败,但在我们制作的内容类型中,很少发生。部分出于这个原因,很难对将内容迁移到更强大系统的长期策略产生太大的热情。我的期望是会发生这样的迁移,但这是由更大的考虑因素驱动的,而不是我们的标记设备的限制。
更新:
根据您的补充意见,这听起来像你将有你希望你的用户能够快速添加,使用短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!!]]
不要重新发明轮子:Text::Markdown。
我知道Markdown/etc。我实际上正在考虑一个额外的层,以便使某些链接更容易,例如,使用键链接到内部网站,而不是自己解析所有内容,或者链接到具有捷径的标记列表。 – Timmy 2009-10-07 19:58:57
这是一个主要的文本摘要部分,我有一个基于树的解析器,可以验证并剥离HTML(第三方),但我希望功能允许一些内部链接,例如wikipedia的语法与[[Article Name] ]会自动翻译成链接。我想这样做,同时确保人们不能把任何危险放在里面.. – Timmy 2009-10-07 21:03:22