Frage

Nur eine Zeichenfolge. Hinzufügen \‘, um es jedes Mal gibt es einen Apostroph.

War es hilfreich?

Lösung

replace arbeitet für das erste Zitat, so benötigen Sie einen kleinen regulären Ausdruck:

str = str.replace(/'/g, "\\'");

Andere Tipps

Nach JavaScript Funktion behandelt‘,“, \ b, \ t, \ n \ f oder \ r äquivalent von PHP-Funktion addslashes ().

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, '\\"');
}

kann ein String umfassend sein entkommen und kompakt mit JSON.stringify. Es ist ein Teil von JavaScript wie die ECMAScript 5 und von großen neueren Browser-Versionen unterstützt.

str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);

Mit diesem Ansatz, auch Sonderzeichen wie der Null-Byte, Unicode-Zeichen und Zeilenumbrüche \r und \n ordnungsgemäß in einer relativ kompakten Aussage entkam.

Um sicher zu sein, müssen Sie nicht nur die einfachen Anführungszeichen ersetzen, sondern auch die bereits entkam die:

"first ' and \' second".replace(/'|\\'/g, "\\'")

Eine Antwort, die Sie nicht danach fragen haben kann hilfreich sein, wenn Sie den Austausch in der Vorbereitung tun für das Senden der Zeichenkette in alert () -. Oder irgendetwas anderes, wo ein einzelnes Anführungszeichen könnten Sie stolpern

str.replace("'",'\x27')

Das wird wieder alle einfachen Anführungszeichen mit dem Hex-Code für Apostroph.

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);

Gibt Ihnen:

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, '&lt;')
             .replace(/>/g, '&gt;').replace(/\u0000/g, '\\0');
        }
}

Verbrauch: alert (str.addSlashes ());

ref: https://stackoverflow.com/a/9756789/3584667

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top