web-dev-qa-db-fra.com

Échapper aux valeurs hexadécimales/rgba

Je sais que sanitize_hex_color existe pour la désinfection des valeurs hexadécimales entrant dans la base de données (et n'existe que dans le Customizer), mais quelle est la meilleure fonction pour échapper à ces mêmes valeurs. Devrais-je simplement utiliser sanitize_hex_color? Y a-t-il une fonction plus performante?

Qu'en est-il des valeurs RGBA?

Voici une fonction que j'utilise pour assainir les valeurs hex + rgba en ce moment:

function example_sanitize_rgba( $color ) {
    if ( '' === $color )
        return '';

    // If string does not start with 'rgba', then treat as hex
    // sanitize the hex color and finally convert hex to rgba
    if ( false === strpos( $color, 'rgba' ) ) {
        return sanitize_hex_color( $color );
    }

    // By now we know the string is formatted as an rgba color so we need to further sanitize it.
    $color = str_replace( ' ', '', $color );
    sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha );
    return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')';

    return '';
}

Puis-je l'utiliser pour échapper aux mêmes valeurs? Et s'il y a plus de 100 valeurs sur la page? Semble un peu "lourd".

Toute entrée est grandement appréciée!

2
Tom Usborne

Je viens tout juste de terminer le rappel de désinfection pour les couleurs RGBA. Et testé dans mon thème, il fonctionne parfaitement et il respecte les valeurs RGBA.

s'il vous plaît trouver le code

function awstheme_sanitize_rgba( $color ) {
    if ( empty( $color ) || is_array( $color ) )
        return 'rgba(0,0,0,0)';

    // If string does not start with 'rgba', then treat as hex
    // sanitize the hex color and finally convert hex to rgba
    if ( false === strpos( $color, 'rgba' ) ) {
        return sanitize_hex_color( $color );
    }

    // By now we know the string is formatted as an rgba color so we need to further sanitize it.
    $color = str_replace( ' ', '', $color );
    sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha );
    return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')';}
3
ahmad araj