1

我在我的 wordpress 主题中创建了一个简单的包装短代码。

并且正在使用ed.onBeforeSetContentanded.onPostProcess来回切换

[wrap vars="whatever"]my cool content[/wrap]文本视图中的简码

<div class="wrap">my cool content</div>可视化视图中的html

这对这段代码很有效。

_get_wrap : function(co) {
    return co.content.replace(/\<div(.*?)?\>(?:(.+?)?\<\/div\>)?/g, function(a,b,c) {               
        var arr = b.replace(/['"]/g,'').split(' ');
        var params = new Object();
        for (var i=0;i<arr.length;i++){
            var p = arr[i].split('=');
            params[p[0]] = p[1];
        }
        if ( params['class'] == "wrap" )
            return '[wrap'+b+']'+c+'[/wrap]';
        return a;
    });
}

不幸的是,如果在开始和结束简码之间有一个returnnew line内容,它会失败

c当有换行符时,如何使用上面的代码保持内容完整?

4

1 回答 1

2

.通配符不匹配换行符。要匹配换行符,您必须使用以下内容[^]

_get_wrap : function(co) {
    return co.content.replace(/\<div([^]*?)?\>(?:([^]+?)?\<\/div\>)?/g, function(a,b,c) {               
        var arr = b.replace(/['"]/g,'').split(' ');
        var params = new Object();
        for (var i=0;i<arr.length;i++){
            var p = arr[i].split('=');
            params[p[0]] = p[1];
        }
        if ( params['class'] == "wrap" )
            return '[wrap'+b+']'+c+'[/wrap]';
        return a;
    });
}
于 2013-07-02T18:15:17.043 回答