*
* @param string|null $text Texto a ser formatado
* @return string Texto formatado para HTML
*/
public static function formatContent(?string $text): string
{
if (empty($text)) {
return '';
}
// 1. Escapa caracteres especiais HTML (segurança contra XSS)
$text = htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
// 2. Converte URLs em links clicáveis
// Padrão para URLs HTTP/HTTPS
$urlPattern = '/(https?:\/\/[^\s\)\]]+)/i';
$text = preg_replace_callback($urlPattern, function ($matches) {
$url = rtrim($matches[1], '.,;:!?)\'\"'); // Remove pontuação final
$displayUrl = strlen($url) > 60 ? substr($url, 0, 57) . '...' : $url;
return '' . $displayUrl . '';
}, $text);
// 3. Converte quebras de linha em
$text = nl2br($text);
return $text;
}
/**
* Limpa e normaliza quebras de linha no texto.
* Útil para normalizar dados antes de salvar no banco.
*
* @param string|null $text Texto a ser normalizado
* @return string Texto com quebras de linha normalizadas
*/
public static function normalizeLineBreaks(?string $text): string
{
if (empty($text)) {
return '';
}
// Normaliza todas as variações de quebra de linha para \n
$text = str_replace(["\r\n", "\r"], "\n", $text);
return $text;
}
}