PHP functions tips

PHP fajny jest, ale czasem pomysłu na coś znaleźć trzeba. Oto kilka z życia wziętych:

Konwersja UTF8 do Mazovia. Po łatwej przeróbce można i odwrotnie. Było mi to potrzebne do wykonania exportu do jakiegoś systemu księgowego.

function utf2mazovia_specialchars($str) {
  $str = str_replace('"', ' ', $str);
  $str = str_replace(',', ' ', $str);
  $maz_from = array(chr(161),chr(198),chr(202),chr(163),chr(209),chr(211),chr(166),chr(172),chr(175),chr(177),chr(230),chr(234),chr(179),chr(241),chr(243),chr(182),chr(188),chr(191));
  $maz_to = array(chr(143),chr(149),chr(144),chr(156),chr(165),chr(163),chr(152),chr(160),chr(161),chr(134),chr(141),chr(145),chr(146),chr(164),chr(162),chr(158),chr(166),chr(167));
  // old Polish programs need it
  $str = iconv('UTF-8', 'ISO-8859-2//TRANSLIT', $str);
  $str = str_replace($maz_from, $maz_to, $str);
  return $str;
}

Ile dni ma miesiąc zawarty w dacie? Może da się prościej, ale ta metoda świetnie działa u mnie od 10 lat

function days_of_month($date_in) {
  $miesiac = substr($date_in, 5, 2);
  $rok = substr($date_in, 0, 4);
  $dom = date("t", mktime(0,0,0, $miesiac, 1, $rok));
  return $dom;
}

Ile dni jest pomiędzy dwoma datami?

function date_diff_days($date_from, $date_to) {
  $days = round(( mktime(0, 0, 0, substr($date_to, 5, 2), substr($date_to, 8, 2), substr($date_to, 0, 4)) - mktime(0, 0, 0, substr($date_from, 5, 2), substr($date_from, 8, 2), substr($date_from, 0, 4)) ) / 86400.0) + 1;
  return $days;
}

Sformatuj liczbę do formatu polskiej waluty (1565,9 => 1 565,90)

function strpln($liczba) {
  $liczba1 = str_replace(array(' ', ','), array('', '.'), round(trim($liczba), 2));
  $liczba2 = strlen($liczba1) ? number_format($liczba1, 2, ',', ' ') ? '';
  return $liczba2;
}
// please test because of new shorter version

Weryfikacja poprawności adresu MAC

function is_mac($str) {
  return (preg_match('/^[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}:[a-f0-9]{2}$/i', $str));
}

Kwota słownie

napisz maila, to wrzucę 🙂

Reklamy