JavaScript: codifica dei caratteri in entità HTML numeriche

Short link

In JavaScript possiamo ispirarci ad un linguaggio come Java per implementare la codifica di una stringa in entità HTML numeriche.

La soluzione in Java proposta in IDS51-J. Properly encode or escape output della SEI CERT Oracle Coding Standard for Java presenta la caratteristica di essere molto performante in quanto la conversione in entità HTML numerica avviene tramite la manipolazione della stringa di input senza l'impiego di espressioni regolari.


public class ValidateOutput {
    //...

    private static String HTMLEntityEncode(String input) {
        StringBuffer sb = new StringBuffer();
 
        for (int i = 0; i < input.length(); i++) {
            char ch = input.charAt(i);
            if (Character.isLetterOrDigit(ch) || Character.isWhitespace(ch)) {
                sb.append(ch);
            } else {
                sb.append("&#" + (int)ch + ";");
            }
        }
        return sb.toString();
    }

}

La nostra implementazione in JavaScript sarà similare, ma con le opportune differenze.


'use strict';

const htmlEntityEncode = (input) => {
    if(typeof input === 'string' && input.length > 0) {
        let output = '';
        for(let i = 0; i < input.length; i++) {
            let ch = input[i];
            if(/^[a-z0-9]$/i.test(ch) || /^\s+$/.test(ch)) {
                output += ch;
            } else {
                output += '&#' + ch.charCodeAt() + ';';
            }

        }
        return output;
    }  else {
        return input;
    }
};

L'autore

Gabriele Romanato, sviluppatore web full stack specializzato in siti, applicativi web ed e-commerce con Node.js e PHP.