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個以上の値があるとどうなりますか?少し "重い"ようです。
どんな入力でも大歓迎です!
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.')';}