JavaScript a-t-il une fonction intégrée comme la fonction addslashes
(ou addcslashes
) de PHP pour ajouter des barres obliques inverses aux caractères qui doivent être échappés dans une chaîne?
Par exemple, ceci:
Il s'agit d'une chaîne de démonstration avec "guillemets simples" et "guillemets doubles".
...deviendrait:
Il s'agit d'une chaîne de démonstration avec\'guillemets simples \' et\"guillemets doubles \".
http://locutus.io/php/strings/addslashes/
function addslashes( str ) {
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
Vous pouvez également essayer ceci pour les guillemets doubles:
JSON.stringify(sDemoString).slice(1, -1);
JSON.stringify('my string with "quotes"').slice(1, -1);
Une variation de la fonction fournie par Paolo Bergantino qui fonctionne directement sur String:
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');
}
En ajoutant le code ci-dessus dans votre bibliothèque, vous pourrez faire:
var test = "hello single ' double \" and slash \\ yippie";
alert(test.addSlashes());
MODIFIER:
En suivant les suggestions dans les commentaires, quiconque est préoccupé par les conflits entre les bibliothèques JavaScript peut ajouter le code suivant:
if(!String.prototype.addSlashes)
{
String.prototype.addSlashes = function()...
}
else
alert("Warning: String.addSlashes has already been declared elsewhere.");
Utilisez encodeURI ()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI
Échappe à peu près tous les caractères problématiques dans les chaînes pour un encodage JSON et un transit appropriés pour une utilisation dans les applications Web. Ce n'est pas une solution de validation parfaite, mais elle attrape les fruits bas.