Wytłumaczy ktoś kod ? Najlepiej linijka po linijce. Jest to kalkulator z hex do RGB.

0
<?php function Hex2RGB($color){ $color = str_replace('#', '', $color); if (strlen($color) != 6){ return array(0,0,0); } $rgb = array(); for ($x=0;$x<3;$x++){ $rgb[$x] = hexdec(substr($color,(2*$x),2)); } return $rgb; } $A1 = @$_POST['A1']; print_r(Hex2RGB($A1)); ?>
2
Venthrill napisał(a):

function Hex2RGB($color){

Definicja funkcji Hex2RGB wymagającej jednego parametru, który wewnątrz niej będzie widoczny jako $kolor.

$color = str_replace('#', '', $color);

Wytnij z $color wiodący płotek i zamień na nic ''.

if (strlen($color) != 6){ return array(0,0,0); }

Jeśli długość stringa, który zostanie jest różna niż 6 znaków, zwróć tablicę z trzema zerami.
(Nota bene w CSS dopuszczalne jest również skrócone definiowanie koloru, np: #666).

$rgb = array();

Stwórz zmienną tablicową $rgb (w zasadzie można pominąć).

for ($x=0; $x<3; $x++){
...
}

Pętla. Powtarzaj od x=0 do x<3 z krokiem +1.

$rgb[$x] = hexdec(substr($color,(2*$x),2));

Wytnij ze stringa odcinek liczony od 2×x znaków, o długości 2 znaków.
Wycięty fragment przelicz z systemu szesnastkowego na dziesiątkowy.
Obliczoną wartość dziesiętną zapisz tablicy $rgb pod indeksem $x.

return $rgb;

Zwróć zbudowaną tablicę.

$A1 = @$_POST['A1'];

Przypisz zmiennej $A wartość przesłaną w formularzu.
@ Jeśli nic nie przesłano, nie wyświetlaj błędu.

print_r(Hex2RGB($A1));

Wyświetl zawartość tablicy zwróconej przez funkcję.

0

Używanie @ to bardzo zły pomysł.

0
serek napisał(a):

Używanie @ to bardzo zły pomysł.

$fp = @fopen($will_fail, 'r');
if (!$fp) {
    ...
}

Jakie zmiany proponujesz?

2
$A1[] = "brak danych";
if (isset($_GET['A1'])==true) {
  $A1 = $_GET['A1'];
  $A1 = Hex2RGB($A1);
}
print_r($A1);

I to zwracanie samych zer przy niepoprawnych danych też może być mylące, powinno raczej zwrócić info, że wprowadzono niepoprawne dane, które wyglądają tak.

A odnośnie @fopen, patrz: if (is_file($plik)).

0
Freja Draco napisał(a):

A odnośnie @fopen, patrz: if (is_file($plik)).

  1. To wprowadzi race condition. 2. fopen może zakończyć się niepowodzeniem z wielu innych powodów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1