$code) { return true; } } return false; } public static function removeDiacritics(string $s): string { $transliterator = Transliterator::createFromRules(':: Any-Latin; :: Latin-ASCII; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC;', Transliterator::FORWARD); return $transliterator->transliterate($s); } public static function validateFullName(string $fullName): bool { $pattern = [ "/([\s])+(-)/" => "-", "/(-)([\s])+/" => "-", "/([\s])+/" => " ", ]; $fullName = trim(preg_replace(array_keys($pattern), array_values($pattern), $fullName)); return (bool) preg_match("/^ (?: (?=[\-.]*[A-zÀ-ÿěščřžýáíéóúůďťňĎŇŤŠČŘŽÝÁÍÉÚŮĚÓ][\-.]*) (?# Následující slovo obsahuje alespoň jedno písmeno) (?:[A-zÀ-ÿěščřžýáíéóúůďťňĎŇŤŠČŘŽÝÁÍÉÚŮĚÓ\-.']){2,} (?# Matchnu slovo o min. dvou znacích) | - (?# Matchnu pomlčku mezi slovy) ) (?: \ *[ ]\ * (?# Oddělovačem slova jsou mezery a .,-') (?: (?=[\-.]*[A-zÀ-ÿěščřžýáíéóúůďťňĎŇŤŠČŘŽÝÁÍÉÚŮĚÓ][\-.']*) (?# Následující slovo obsahuje alespoň jedno písmeno) [A-zÀ-ÿěščřžýáíéóúůďťňĎŇŤŠČŘŽÝÁÍÉÚŮĚÓ\-.,']{2,} | - (?# Matchnu pomlčku mezi slovy) ) )+ (?# Slov může být více, ale min. dvě) $ /mx", $fullName); } public static function convertToType($str) { if (!is_string($str)) { return $str; } // Pokud řetězec obsahuje pouze číslice if (ctype_digit($str)) { // když začíná 0 a má víc jak 1 znak, vratíme string if (strpos($str, '0') === 0 && strlen($str) > 1) { return $str; } return (int)$str; // jinak vratíme integer } // Pokud řetězec obsahuje číslice a případně jednu desetinnou tečku, vratíme float if (preg_match('/^\d+\.\d+$/', $str)) { return (float)$str; } // Pro "true" a "false" vrátíme boolean if (strtolower($str) === 'true') { return true; } if (strtolower($str) === 'false') { return false; } // V opačném případě vratíme původní řetězec return $str; } }