4

以下の関数は、入力ファイルストリームを受け取り、$color 値をデータベースから格納された値 (color1=ffffff、color2=aaaaaa、color3=cccccc など) に置き換えます。

現在、6 桁の 16 進数値に対してのみ直接検索/置換を行います。入力ストリーム パターンに基づいて 6 桁の 16 進数または 9 桁の RGB を返すために my_colorReplace 関数に追加できる正規表現はありますか?

function my_colorReplace($buffer) {

 /* NEED REGEX HERE TO DETERMINE WHETHER TO CALL CONVERTHEXTORGB() */

    $buffer = str_replace(array('$color1'), '#'.get_option("my_theme_header_color").'', $buffer);
    $buffer = str_replace(array('$color2'), '#'.get_option("my_theme_sidebar_color").'', $buffer);
    $buffer = str_replace(array('$color3'), '#'.get_option("my_theme_spot_color_alt").'', $buffer);
    $buffer = str_replace(array('$color4'), '#'.get_option("my_theme_spot_color_alt2").'', $buffer);
return $buffer;
}

16 進値を RGB に変換するユーティリティ関数

function convertHexToRGB($hexColor){
    if( preg_match( '/^#?([a-h0-9]{2})([a-h0-9]{2})([a-h0-9]{2})$/i', $hexColor, $matches ) )
    {
    return array('red' => hexdec( $matches[1] ),'green' => hexdec( $matches[2] ),'blue' => hexdec( $matches[3] ));
    }
    else
    {
        return array( 120, 120, 120 );
    }
}

入力ストリーム ($buffer):

.sidebar{
    background:$color1;
    color:$color2;
    }

.header{
    background: 
        linear-gradient(to bottom, rgba($color1,.5) 0%, 
        rgba(255,255,255,0.96) 100px, 
        rgba(255,255,255,0.95) 150px); /* W3C */

    color:rgb($color3); 
}

$buffer return の期待される出力 (ここで、color1=ffffff、color2=aaaaaa、color3=cccccc)

.sidebar{
    background:#fffff;
    color:#aaaaaa;
    }

.header{
    background: 
        linear-gradient(to bottom, rgba(255,255,255,.5) 0%, 
        rgba(255,255,255,0.96) 100px, 
        rgba(255,255,255,0.95) 150px); /* W3C */

    color:rgb(204,204,204); 
}
4

0 に答える 0