addlashes JavaScript эквивалент - PullRequest
       8

addlashes JavaScript эквивалент

3 голосов
/ 23 августа 2011

Я ищу правильную версию JavaScript-эквивалента PHP addSlashes.

Я нашел много версий, но ни одна из них не обрабатывает \b, \t, \n, \f или \r.

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

Для завершения этот jsFiddle должен выдать предупреждение: \b\t\n\f\r"\\

Ответы [ 4 ]

7 голосов
/ 23 августа 2011
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 для замены \b на \\b. Синтаксис регулярного выражения в JavaScript не принимает \b, но принимает \u0008. Синтаксис строкового литерала JavaScript распознает как \b, так и \u0008.

2 голосов
/ 21 августа 2012

Или этот из phpjs.org

function addslashes(str){
    return  (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
1 голос
/ 12 июля 2013

Короче и на удивление эффективнее :

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

(slice(2, -4), если вам не нужны кавычки вокруг строки)

0 голосов
/ 28 июня 2019

Вам нужно экранировать специальный символ с обратной косой чертой \. Простой и короткий -

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

Он будет экранировать специальные символы, в том числе и эти.

NULL (0x00) -> \ 0 [Это ноль, а не буква O]

BS (0x08) -> \ b

TAB (0x09) -> \ t

LF (0x0a) -> \ n

CR (0x0d) -> \ r

SUB (0x1a) -> \ Z

"(0x22) -> \"

% (0x25) -> \%

'(0x27) -> \'

\ (0x5c) -> \

_ (0x5f) -> _

...