~HexColor aus String?

H Zusammen,
werde aus dem Profil ~HexColor nicht schlau und Doku find ich auch keine.

Ich habe eine Farbe in einem String (#0D0100) und möchte natürlich in der Visu nicht den String sondern eine schöne Farbe anzeigen.

So, wie mache ich das?

echo $dec = hexdec(„0D0100“);
funktioniert mal leider nicht, kommt immer schwarz

Danke und lg

Habe mal hier was aus meinem Fundus …

function int2rgb($num)
{
    $rgb[0] = ($num & 0xFF0000)>>16;
    $rgb[1] = ($num & 0x00FF00)>>8;
    $rgb[2] = ($num & 0x0000FF);
    return $rgb;
}

function rgb2int($rgb)
{
    $num = $rgb[0] << 16;
    $num+= $rgb[1] << 8;
    $num+= $rgb[2];
    return $num;
}

function str2rgb($str)
{
    $str = preg_replace('~[^0-9a-f]~','',$str);
    $rgb = str_split($str,2);
    for($i=0; $i<3; $i++) {
        $rgb[$i] = intval($rgb[$i],16);
    }
    return $rgb;
}
  1. str2rgb
  2. rgb2int
  3. SetValue

Gruß HEiko

1 „Gefällt mir“

Thx Heiko!

habs schon gehabt und jetzt hakts wieder:

// $string1 = GetValue(43791);

$string2 = "#0D282D";
$ergebnis_1 = str2rgb($string2);
$wunschFarbe = rgb2int($ergebnis_1);

SetValue(11634,$wunschFarbe); 

// ********************************************************************************************************************************

function int2rgb($num)
{
    $rgb[0] = ($num & 0xFF0000)>>16;
    $rgb[1] = ($num & 0x00FF00)>>8;
    $rgb[2] = ($num & 0x0000FF);
    return $rgb;
}

function rgb2int($rgb)
{
    $num = $rgb[0] << 16;
    $num+= $rgb[1] << 8;
    $num+= $rgb[2];
    return $num;
}

function str2rgb($str)
{
    $str = preg_replace('~[^0-9a-f]~','',$str);
    $rgb = str_split($str,2);
    for($i=0; $i<3; $i++) 
    {
        $rgb[$i] = intval($rgb[$i],16);
    }
    return $rgb;
}

Warning: Undefined array key 2 in /var/lib/symcon/scripts/33766.ips.php on line 34

mit $string2 = „#010701“; gehts aber, und wenn ichs klein schreibe auch 0d282d :wink:

Also nur wenn ichs aus der Variable lese funktionierts nicht:

$string1 = GetValue(43791);

Also ich checks nicht:

$string1 = „#3C1F07“; geht nicht

$string1 = „#3c1F07“; geht

habs gelöst (im Moment) mit strtolower

Danke und glg

Ja, weil die regular Expression in str2rgb nur Zahlen 0-9 und Buchstaben a-f filtert!

Versuchmal so aus dem Bauch heraus …

  $str = preg_replace('~[^0-9a-fA-F]~','',$str);

Gruß Heiko

PS: oder mach ein strtolower oder wie das heißt!

1 „Gefällt mir“

Warst schneller:) …