什么';HTML链接标记的语法很好,可以简化内部链接吗?

什么';HTML链接标记的语法很好,可以简化内部链接吗?,html,markdown,Html,Markdown,我想创建一个好的语法,使链接到内部内容变得更容易,有点像Wiki,所以我想用户可以使用以下内容: Bah bah bah reference: [[a]] 并将其转换为HTML: Bah bah bah reference: <a href="..../id=a">title</a> Bah-Bah-Bah参考: 但我担心感叹词和安全问题。什么是好的语法(可能是[[]]或其他什么)以及什么是安全的正则表达式?不要重新发明轮子:。不要重新发明轮子:。虽然Sinan使用

我想创建一个好的语法,使链接到内部内容变得更容易,有点像Wiki,所以我想用户可以使用以下内容:

Bah bah bah reference: [[a]]
并将其转换为HTML:

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

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

不要重新发明轮子:。

不要重新发明轮子:。

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

如果是后者,有时最好从短期变通办法和长期战略的角度来解决问题。短期的解决方法——某种与你问题中提出的语法完全相同的本土语法——将是丑陋的,可能会在这里或那里引起麻烦,但它可以完成工作。例如,我们的组织有一大堆Word文档,它们最终为HTML页面提供内容。在这些Word文件中,工作人员使用类似这样的方法创建链接,并做出我们的解析代码处理的一些其他声明:
##some###
。失败的方式有很多,但在我们制作的内容类型中,这种情况很少发生。部分原因是,很难对将内容迁移到更健壮的系统的长期战略产生很大的热情。我的期望是这样的迁移会发生,但它是由更大的考虑因素驱动的,而不是由我们笨拙的
#foo#
标记设备的局限性驱动的

更新:

根据您的附加评论,听起来您将有一个链接列表,您希望您的用户能够使用短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!!]]
使用严格;
使用警告;
我的%approved\u链接=(
所以_perl=>'http://stackoverflow.com/questions/tagged/perl',
所以_ruby=>'http://stackoverflow.com/questions/tagged/ruby',
);
我的$regex=qr/\[\[([^\]]+)\]\]\]/x;
而(){
如果映射,则死亡“危险:$\n”{
存在$approved_链接{$\u}?():($)
}/$regex/g;
s/$regex/$approved_链接{$1}/g;#不完整,但你明白了。
打印
}
__资料__
一些文本[不是id][[sou perl]]更多[[sou ruby]]更多。。
诸如此类
[[id不正确!!]]

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

如果是后者,有时最好从短期变通办法和长期战略的角度来解决问题。短期的解决方法——某种与你问题中提出的语法完全相同的本土语法——将是丑陋的,可能会在这里或那里引起麻烦,但它可以完成工作。例如,我们的组织有一大堆Word文档,它们最终为HTML页面提供内容。在这些Word文件中,工作人员使用类似这样的方法创建链接,并做出我们的解析代码处理的一些其他声明:
##some###
。失败的方式有很多,但在我们制作的内容类型中,这种情况很少发生。部分原因是,很难对将内容迁移到更健壮的系统的长期战略产生很大的热情。我的期望是这样的迁移会发生,但它是由更大的考虑因素驱动的,而不是由我们笨拙的
#foo#
标记设备的局限性驱动的

更新:

根据您的附加评论,听起来您将有一个链接列表,您希望您的用户能够使用短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!!]]
使用严格;
使用警告;
我的%approved\u链接=(
所以_perl=>'http://stackoverflow.com/questions/tagged/perl',
所以_ruby=>'http://stackoverflow.com/questions/tagged/ruby',
);
我的$regex=qr/\[\[([^\]]+)\]\]\]/x;
而(){
如果映射,则死亡“危险:$\n”{
存在$approved_链接{$\u}?():($)
}/$regex/g;
s/$regex/$approved_链接{$1}/g;#不完整,但你明白了。
打印
}
__资料__
一些文本[不是id][[sou perl]]更多[[sou ruby]]更多。。
诸如此类
[[id不正确!!]]

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

类似于或的东西?为什么不使用现有的实现?

我知道降价/等等。我实际上正在考虑在其上增加一层,以使某些链接更容易,例如,使用密钥链接到内部站点,而不是自己解析所有内容,或者用快捷方式链接到标签列表。我知道降价/等等。我实际上在考虑在上面加一层,以使某些链接更容易,例如,用一个键链接到一个内部站点,而不是自己解析所有内容,或者用快捷方式链接到标签列表。这主要是一个文本摘要部分,我有一个基于树的解析器,可以对HTML(第三方)进行验证和剥离,但我希望功能允许一些内部链接,例如w