0

必要に応じてxmlエンティティを使用して文字列をxml文字列に変換する関数を探しています。PHPのhtmlentitiesに似ていますが、XMLおよびJavascript用です。

助けてくれてありがとう!

4

1 に答える 1

2

innerHTML組み込みのものは何もありません (この目的のために非常に危険なシリアライゼーションを除いて)、自分で書く必要があります。

function encodeXml(s) {
    return (s
        .replace(/&/g, '&').replace(/"/g, '"').replace(/'/g, ''')
        .replace(/</g, '&lt;').replace(/>/g, '&gt;')
        .replace(/\t/g, '&#x9;').replace(/\n/g, '&#xA;').replace(/\r/g, '&#xD;')
    );
}

これは、安全のための最大限のエスケープ関数です。

  • "、およびタブ/CR/LF文字は常にエンコードさ'れますが、特定の引用符文字が区切り文字として使用されている属性値でエスケープする必要があるだけです。

  • 常にエンコードさ>れますが、これは実際に]]>はテキスト コンテンツのシーケンスの一部である場合にのみエスケープする必要があります。

これらのプロパティが必要ない場合は、必要のない を削除できますreplace(たとえば、属性値に tab/CR/LF を入れる必要があることはほとんどありません)。

HTML 互換の XHTML を生成する必要がある場合、そのエスケープが必要な場合は&#39;代わりに使用してください。&apos;

一般に、ASCII 以外のすべての文字を HTML エンティティ参照として不必要にエンコードするため、代わりにhtmlentities使用することを避けて使用する必要があります。これには、適切なパラメーターを指定しないとテキストが台無しになるという副作用もあります。htmlspecialcharshtmlentities$charset

于 2010-06-02T17:29:36.000 に答える