2011-08-23 17 views
3

私は、PHPのaddSlashesのJavaScriptに相当するバージョンを探しています。addslashes JavaScript相当

私は多くのバージョンを発見した、それらのどれも\b\t\n\fまたは\rを処理しません。

http://jsfiddle.net/3tEcJ/1/

完了していることが、このjsFiddleは警告する必要があります:私は\\b\bを置き換えるために\u0008を使用しましたか\b\t\n\f\r"\\

答えて

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

お知らせ。 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

から、この1短いと驚くほどmore efficient

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

slice(2, -4)あなたは、文字列の前後に引用符を必要としない場合)