ただの文字列。一重引用符があるたびに\ 'を追加します。
replace
は最初の引用符で機能するため、小さな正規表現が必要です。
str = str.replace(/'/g, "\\'");
次のJavaScript関数ハンドル '、 "、\ b、\ t、\ n、\ f、または\ r相当の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, '\\"');
}
JSON.stringifyを使用して、文字列を包括的かつコンパクトにエスケープできます。 ECMAScript 5 の時点でJavaScriptの一部であり、主要な新しいブラウザーバージョンでサポートされています。
str = JSON.stringify(String(str));
str = str.substring(1, str.length-1);
このアプローチを使用すると、nullバイトとしての特殊文字、Unicode文字、および改行\r
および\n
は、比較的コンパクトなステートメントで適切にエスケープされます。
Alert()に文字列を送信するための準備で置換を行っている場合、または単一引用符文字があなたをつまずかせる可能性がある場合は、あなたがそれを求めなかった答えが役立つかもしれません。
str.replace("'",'\x27')
これにより、すべての単一引用符が単一引用符のhex codeに置き換えられます。
確かに、単一引用符だけでなく、すでにエスケープされている引用符も置き換える必要があります。
"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);
あなたにあげる:
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');
}
}
使用法:alert(str.addSlashes());