转义JavaScript中的特殊字符

时间:2009-09-06 22:29:33

标签: php javascript

我在JavaScript中需要一个方法来转义所有不是的字符(a-z / A-Z / 0-9 / - / _)

如果字符为ø,则应将其替换为oe,如果它被替换为aa,则更多....如果字符不在列表中,则应将其替换为下划线。

如果连续有两个下划线(__),则应将它们替换为单个下划线。

我需要在JavaScript和/或PHP中完成此操作。

1 个答案:

答案 0 :(得分:6)

String.prototype.slugify = function(){
    return this.replace('ø','oe').replace('å','aa').replace(/\W/gi,'_').replace(/_+/g,'_');
}
var x = 'sdfkjshødfjsåkdhf#@$%#$Tdkfsdfxzhfjkasd23hj4rlsdf9';
x.slugify();

根据.replace('search','replace')模式添加任意数量的规则。确保使用.replace(/\W/gi,'_').replace(/_+/,'_')完成转换。另外,请确保以UTF-8提供服务,以适应ø等特殊字符。

Strager建议的替代版本:

String.prototype.slugify = function(){
    var replacements = {
        'ø': 'oe',
        'å': 'aa'
    }
    var ret = this;
    for(key in replacements) ret = ret.replace(key, replacements[key]);
    return ret.replace(/\W/gi,'_').replace(/_+/g,'_');
}

这个版本肯定更灵活,更易于维护。我会使用这个,虽然我保留了后代的后代。好主意,Strager!