C, Á -> A, etc.) $value = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $value); // mantém apenas letras e números $value = preg_replace('/[^a-zA-Z0-9]/', '', $value); return $value; } public static function boolean(mixed $value): ?bool { if ($value === null) { return null; } if (is_bool($value)) { return $value; } if (is_string($value)) { $value = strtolower($value); if (in_array($value, ['true', '1', 'yes'], true)) { return true; } if (in_array($value, ['false', '0', 'no'], true)) { return false; } } if (is_int($value)) { return $value === 1; } // Se não for possível converter, retorna null return null; } public static function phone(mixed $value, bool $withCountryCode = false): ?string { if ($value === null) { return null; } // remove tudo que não for número $value = preg_replace('/\D/', '', $value); if (!$value) { return ''; } // adiciona DDI do Brasil se não tiver if ($withCountryCode) { if (strlen($value) === 10 || strlen($value) === 11) { $value = "55{$value}"; } } return $value; } }