勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで指定したカラーコードの反対色を計算し、カラーコードとして出力する方法

  PHP

あるシステム内でユーザが指定したカラーコードをCSSで指定した上で出力するというケースがあった。例えば「#ff0000」という文字列を赤で表示するというもの。ただ、背景色は白だったため指定したカラーコードによっては見づらい場合があった。そのため反対色を自動で計算し、背景色に指定したい。以下に対応方法をメモ。

 

対応方法

ソースコード

<?php
var_dump(color_inverse('#ff0000')); //string(7) "#00ffff"
var_dump(color_inverse('#00ff00')); //string(7) "#ff00ff"
var_dump(color_inverse('#0000ff')); //string(7) "#ffff00"


function color_inverse($color){
    $color = str_replace('#', '', $color);
    if( strlen($color) != 6 ){
        return '000000';
    }
    $rgb = '';
    for( $x = 0; $x < 3; $x++ ){
        $c = 255 - hexdec(substr($color, (2 * $x), 2));
        $c = ($c < 0) ? 0 : dechex($c);
        $rgb .= (strlen($c) < 2) ? '0'.$c : $c;
    }
    return '#'.$rgb;
}

 

参考サイト

https://www.jonasjohn.de/snippets/php/color-inverse.htm

 - PHP

  関連記事

PHPのdefine()で配列データの定義と利用方法について
PHPのdefine()で配列データの定義と利用方法について

他社が作成したPHPのソースコードを拝見した際に定数で配列が定義されていた。配列 ...

PHPでJavaScriptを圧縮するライブラリ「JShrink」の利用方法
PHPでJavaScriptを圧縮するライブラリ「JShrink」の利用方法

サイト内でJavaScriptを用いる場合、外部のライブラリやプラグインだと圧縮 ...

PHPにて配列の出力時にジェネレータを利用してメモリを節約する方法
PHPにて配列の出力時にジェネレータを利用してメモリを節約する方法

PHPにて大量のデータが格納された配列をforeach等でループ処理するような場 ...

他所のサーバからWordPressの記事情報をpostIDを指定して取得する方法
他所のサーバからWordPressの記事情報をpostIDを指定して取得する方法

他所のサーバからWPの記事IDを指定した上で、当該IDのタイトル・アイキャッチ画 ...

メモリキャッシュシステムであるMemcachedをPHPにて利用する方法
メモリキャッシュシステムであるMemcachedをPHPにて利用する方法

メモリキャッシュシステムであるMemcachedのインストール方法、IP制限、P ...