Juste une chaîne. Ajoutez-y chaque fois qu'il y a un seul devis.
replace
fonctionne pour la première citation, vous avez donc besoin d'une petite expression régulière:
str = str.replace(/'/g, "\\'");
La fonction JavaScript suivante gère ', ",\b,\t,\n,\f ou\r l'équivalent de la fonction php addlashes ().
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, '\\"');
}
Une chaîne peut être échappée de manière complète et compacte à l'aide de JSON.stringify. Il fait partie de JavaScript à partir de ECMAScript 5 et est pris en charge par les principales versions de navigateur plus récentes.
str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);
En utilisant cette approche, également des caractères spéciaux comme l'octet nul, les caractères unicode et les sauts de ligne \r
et \n
sont correctement échappés dans une instruction relativement compacte.
Une réponse que vous n'avez pas demandée peut être utile, si vous effectuez le remplacement en vue d'envoyer la chaîne dans alert () - ou toute autre chose où un seul caractère de citation pourrait vous tromper.
str.replace("'",'\x27')
Cela remplacera tous les guillemets simples par le code hexadécimal pour les guillemets simples.
Pour être sûr, vous devez non seulement remplacer les guillemets simples, mais aussi ceux déjà échappés:
"first ' and \' second".replace(/'|\\'/g, "\\'")
var myNewString = myOldString.replace(/'/g, "\\'");
var str = "This is a single quote: ' and so is this: '";
console.log(str);
var replaced = str.replace(/'/g, "\\'");
console.log(replaced);
Vous donne:
This is a single quote: ' and so is this: '
This is a single quote: \' and so is this: \'
if (!String.prototype.hasOwnProperty('addSlashes')) {
String.prototype.addSlashes = function() {
return this.replace(/&/g, '&') /* This MUST be the 1st replacement. */
.replace(/'/g, ''') /* The 4 other predefined entities, required. */
.replace(/"/g, '"')
.replace(/\\/g, '\\\\')
.replace(/</g, '<')
.replace(/>/g, '>').replace(/\u0000/g, '\\0');
}
}
Utilisation: alert (str.addSlashes ());