Pergunta

O JavaScript tem uma função built-in função como addslashes do PHP (ou addcslashes) para adicionar barras invertidas para caracteres que precisam de escape em uma string?

Por exemplo, esta:

Esta é uma string demo com 'aspas simples' e "aspas".

... se tornaria:

Esta é uma string demo com \ 'Aspas simples \' e \ "Aspas duplas \".

Foi útil?

Solução

http://locutus.io/php/strings/addslashes/

function addslashes( str ) {
    return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}

Outras dicas

Você também pode tentar isso para as aspas duplas:

JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);

Uma variação da função fornecida pelo Paolo Bergantino que trabalha diretamente na corda:

String.prototype.addSlashes = function() 
{ 
   //no need to do (str+'') anymore because 'this' can only be a string
   return this.replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
} 

Ao adicionar o código acima em sua biblioteca que você será capaz de fazer:

var test = "hello single ' double \" and slash \\ yippie";
alert(test.addSlashes());

EDIT:

Na sequência de sugestões nos comentários, quem está preocupado com os conflitos entre bibliotecas JavaScript pode adicionar o seguinte código:

if(!String.prototype.addSlashes)
{
   String.prototype.addSlashes = function()... 
}
else
   alert("Warning: String.addSlashes has already been declared elsewhere.");

Use encodeURI ()

https://developer.mozilla.org/ en-US / docs / web / JavaScript / Referência / Global_Objects / encodeURI

Escapes praticamente todos os personagens problemáticos em cordas para a codificação JSON adequada e de trânsito para uso em aplicações web. Não é uma solução de validação perfeito, mas ele pega a fruta-pendurado baixo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top