web-dev-qa-db-ja.com

16進数/ RGBA値のエスケープ

sanitize_hex_colorは、データベースに入力される16進値をサニタイズするために存在し(そしてカスタマイザ内にのみ存在する)知っていますが、それらの同じ値をエスケープするための最良の機能は何でしょう。 sanitize_hex_colorを使うべきですか?より優れた機能がありますか?

RGBA値はどうですか?

これが、現在hex + rgbaの値をサニタイズするために使っている関数です。

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 '';
}

これを使って同じ値をエスケープできますか?ページに100個以上の値があるとどうなりますか?少し "重い"ようです。

どんな入力でも大歓迎です!

2
Tom Usborne

RGBAカラーのサニタイズコールバックが終了しました。私のテーマでテストし、完璧に機能し、RGBA値を取得しました。

コードを見つけてください

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