protected static function matchesPattern(string $haystack, string $pattern, string $encoding = null) : bool
    {
        $initialEncoding = mb_regex_encoding();
        mb_regex_encoding($encoding ?: utils\Str::encoding($haystack));
        $result = mb_ereg_match($pattern, $haystack);
        mb_regex_encoding($initialEncoding);

        return $result;
    }