', '', $html); $html = str_ireplace('

', "\n", $html); // 3. Asegurar que
también se convierta en un salto de línea. $html = preg_replace('//i', "\n", $html); // 4. Eliminar etiquetas no soportadas por Telegram, pero manteniendo las básicas y . // Telegram soporta: , , , , , , , , , , ,
        // Mantenemos  para que nuestro parser interno (TelegramSender) lo procese.
        $allowed_tags = '
';
        $html = strip_tags($html, $allowed_tags);

        // 5. Limpiar múltiples saltos de línea consecutivos, pero NO los espacios en blanco.
        // Esto previene más de dos saltos de línea seguidos, que Telegram ignora.
        $html = trim($html);
        $html = preg_replace('/[\r\n]{3,}/', "\n\n", $html);

        // 6. Corregir etiquetas que pudieran quedar abiertas (buena práctica).
        $html = $this->fixUnmatchedTags($html);

        error_log("HTML convertido para Telegram: " . $html);
        return $html;
    }

    /**
     * Corrige etiquetas HTML no cerradas o mal formadas en el mensaje.
     * @param string $html El HTML a corregir.
     * @return string El HTML con las etiquetas corregidas.
     */
    private function fixUnmatchedTags($html) {
        $tags = ['b', 'strong', 'i', 'em', 'u', 'ins', 's', 'strike', 'del', 'code', 'pre'];
        
        foreach ($tags as $tag) {
            // Contar etiquetas de apertura y cierre
            $openCount = substr_count(strtolower($html), "<$tag>");
            $closeCount = substr_count(strtolower($html), "");
            
            // Si hay más etiquetas de cierre que de apertura, eliminar las sobrantes
            if ($closeCount > $openCount) {
                $diff = $closeCount - $openCount;
                $html = preg_replace("##i", '', $html, $diff);
            }
            // Si hay más etiquetas de apertura que de cierre, agregar las que faltan al final
            elseif ($openCount > $closeCount) {
                $diff = $openCount - $closeCount;
                $html .= str_repeat("", $diff);
            }
        }
        
        return $html;
    }
}