我正在尋找PHP的addSlashes
的JavaScript等效版本。addslashes JavaScript等效
我發現有很多版本,但他們沒有處理\b
,\t
,\n
,\f
或\r
。
是完整的,這應該的jsfiddle提醒:\b\t\n\f\r"\\
我正在尋找PHP的addSlashes
的JavaScript等效版本。addslashes JavaScript等效
我發現有很多版本,但他們沒有處理\b
,\t
,\n
,\f
或\r
。
是完整的,這應該的jsfiddle提醒:\b\t\n\f\r"\\
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, '\\"');
}
注意我是如何使用\u0008
與\\b
更換\b
。 JavaScript的正則表達式語法似乎不接受\b
,但它確實接受\u0008
。 JavaScript的字符串文字語法可識別\b
和\u0008
。
或者這一個從phpjs.org
function addslashes(str){
return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
}
短,令人驚訝的more efficient:
function as(str) {
var a = {};
a[str] = 1;
return JSON.stringify(a).slice(1,-3);
}
(slice(2, -4)
如果你不需要繞串引號)
FWIW'取代(/ \ b/g,'\\ b')'在我對jsfiddle的測試中不起作用。 –
我剛剛注意到了,編輯了我的答案,使用'\ u0008',它的工作原理。似乎JavaScript的正則表達式語法不能識別'\ b'。 –
謝謝,效果很好。 – GAgnew