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ę.
Używanie @
to bardzo zły pomysł.
serek napisał(a):
Używanie
@
to bardzo zły pomysł.
$fp = @fopen($will_fail, 'r');
if (!$fp) {
...
}
Jakie zmiany proponujesz?
$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))
.
Freja Draco napisał(a):
A odnośnie
@fopen
, patrz:if (is_file($plik))
.
- To wprowadzi race condition. 2.
fopen
może zakończyć się niepowodzeniem z wielu innych powodów.