2014-03-12 62 views
0

我想編碼我的投入與JavaScript,所以他們不會破壞我創建的XML。現在我有這個Javascript編碼爲xml

function encodeMe(myString) { 
     myString.replace("&", "&amp"); 
     myString.replace("<", "&lt"); 
     myString.replace(">", "&gt"); 
     myString.replace("\"", "&apos"); 
     myString.replace("'", "&quot"); 
     return myString; 
} 

,由於某種原因第2項內容替換都不能正常工作,但仍然打破我的XML

+0

改爲使用外部'.js'?或CDATA塊。 –

回答

0

四件事情:

  1. replace回報更新字符串,所以你必須使用返回值。

  2. 當第一個參數是一個字符串時,它只會替換第一個匹配項;要將它們全部替換,您必須使用g標誌給出正則表達式。 (例如,&amp;,而不是&amp)。

  3. "&quot;而不是&apos;;和'&apos;,不&quot;

例如:

function encodeMe(myString) { 
     mystring = myString.replace(/&/g, "&amp;"); 
     mystring = myString.replace(/</g, "&lt;"); 
     mystring = myString.replace(/>/g, "&gt;"); 
     mystring = myString.replace(/"/g, "&quot;"); 
     mystring = myString.replace(/'/g, "&apos;"); 
     return myString; 
} 

或當然,一個長鏈statment:

function encodeMe(myString) { 
     mystring = myString.replace(/&/g, "&amp;") 
         .replace(/</g, "&lt;") 
         .replace(/>/g, "&gt;") 
         .replace(/"/g, "&quot;") 
         .replace(/'/g, "&apos;"); 
     return myString; 
} 

我也不能100%確定XML有&apos;HTML確實,但我不確定XML是否。

1

缺失; - 雖然我認爲你最後兩個字符轉換了。

而你希望那些替換也有全局標誌。

function encodeMe(myString) { 
    var r = myString.replace("&", "&amp;") 
     .replace("<", "&lt;") 
     .replace(">", "&gt;") 
     .replace("\"", "&apos;") 
     .replace("'", "&quot;"); 

     return r 
} 
+0

很好的捕捉「/」的東西。 –