2011-08-23 157 views

回答

7
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

+0

FWIW'取代(/ \ b/g,'\\ b')'在我對jsfiddle的測試中不起作用。 –

+0

我剛剛注意到了,編輯了我的答案,使用'\ u0008',它的工作原理。似乎JavaScript的正則表達式語法不能識別'\ b'。 –

+0

謝謝,效果很好。 – GAgnew

2

或者這一個從phpjs.org

function addslashes(str){ 
    return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0'); 
} 
1

短,令人驚訝的more efficient

function as(str) { 
    var a = {}; 
    a[str] = 1; 
    return JSON.stringify(a).slice(1,-3); 
    } 

slice(2, -4)如果你不需要繞串引號)