4

我正在寻找与 PHP 等效的 JavaScript 的正确版本addSlashes

我找到了很多版本,但没有一个处理\b, \t, \n,\f\r.

http://jsfiddle.net/3tEcJ/1/

为了完整,这个 jsFiddle 应该提醒:\b\t\n\f\r"\\

4

4 回答 4

7
function addslashes(string) {
    return string.replace(/\\/g, '\\\\').
        replace(/\u0008/g, '\\b').
        replace(/\t/g, '\\t').
        replace(/\n/g, '\\n').
        replace(/\f/g, '\\f').
        replace(/\r/g, '\\r').
        replace(/'/g, '\\\'').
        replace(/"/g, '\\"');
}

注意我过去是如何\u0008用. JavaScript 的正则表达式语法似乎不接受,但它确实接受。JavaScript 的字符串文字语法同时识别和。\b\\b\b\u0008\b\u0008

于 2011-08-23T14:02:22.110 回答
2

或者这个来自phpjs.org

function addslashes(str){
    return  (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
于 2012-08-21T01:37:27.780 回答
1

更短,更高效

 function as(str) {
    var a = {};
    a[str] = 1;
    return JSON.stringify(a).slice(1,-3);
  }

slice(2, -4)如果您不需要在字符串周围加上引号)

于 2013-07-12T07:12:09.740 回答
0

您需要使用反斜杠 \ 转义特殊字符。简单而简短——

let escapeString = unescapeString.replace(/([<>*()?])/g, "\\$1")

它也会转义包括这些在内的特殊字符。

NULL (0x00) --> \0 [这是一个零,不是字母 O]

BS (0x08) --> \b

制表符 (0x09) --> \t

LF (0x0a) --> \n

CR (0x0d) --> \r

SUB (0x1a) --> \Z

" (0x22) --> \"

% (0x25) --> \%

' (0x27) --> \'

\ (0x5c) --> \

_ (0x5f) --> _

于 2019-06-28T08:33:14.300 回答