如何在JScript参数中编码URL的句点

时间:2016-03-14 22:07:19

标签: javascript parsing url escaping bbcode

我正在为我正在设计的论坛网站编写一个实时JavaScript解析器,但我遇到了一个看似简单的打嗝,我无法修复。

我将实时JavaScript解析器改为粗体字,更改颜色,嵌入YouTube视频,甚至嵌套引号!但出于某种原因,它只是不想使用URL(我推断这是因为时期。)

因此,正在解析的文本看起来像典型的bbcode ...... 例如:

 [b]this text will be bold[/b]

 [youtube]youtube link[/youtube]

 [quote=Jake said:]hello world![/quote]

所有这些都有助于产生预期的效果。但是这个:

 [url=www.example.com]Link Name[/url]

不起作用!如果我将链接名称替换为它的实际链接,但是当我将链接作为参数包含以便可以重命名(它适用于引号)时,由于链接中的句点,它不起作用。所以,我的问题是,每当输入一个URL时,我怎么能逃避这些时期。

这是我的URL解析代码。

   'url': {
    openTag: function(params,content) {

        var name = content;
        var uri = params;
        var myUrl = encodeURIComponent(uri);

        return '<a href=' + myUrl + '>'+ name +'</a>';
    },
    closeTag: function(params,content) {
        return '';
    },
content: function(params,content) {
    return '';
}
},

如果我在返回中交换myUrl和Name变量,它可以正常工作,但是我无法编辑URL(比如使URL成为不同的颜色),因为实际的显示部分(Name)成为参数。那么,如何在仍然作为参数的情况下让myUrl工作?

这是引用的代码,它非常相似并且有效。 (但是,如果参数包含句点,就像使用URL一样,它将无效。)

'quoter': {
openTag: function(params,content) {

    var myUrl = content;
    var name = params;
    return '<div><div class="quotetitle">'+ name +' said:</div><div class="quote">' + myUrl + '</div></div>';
},
closeTag: function(params,content) {
    return '';
},
content: function(params,content) {
return '';
}
},

0 个答案:

没有答案