diff --git a/src/lib/utils.ts b/src/lib/utils.ts index 9efeb67..d0c4e58 100644 --- a/src/lib/utils.ts +++ b/src/lib/utils.ts @@ -13,6 +13,7 @@ export function cn(...inputs: ClassValue[]) { export function decodeHtmlEntities(text: string): string { if (!text) return ""; + // Objeto con entidades comunes de WordPress/HTML const entities: { [key: string]: string } = { '–': '–', '—': '—', @@ -28,19 +29,18 @@ export function decodeHtmlEntities(text: string): string { '"': '"', ''': "'", '&': '&', - ' ': ' ', - '–': '–', - '—': '—', + ' ': ' ' }; let decoded = text; + + // Aplicar reemplazos del mapa manual Object.keys(entities).forEach(entity => { decoded = decoded.split(entity).join(entities[entity]); }); - // Remover cualquier otra entidad numérica residual (&#...;) que no esté en el mapa - return decoded.replace(/&#\d+;/g, (match) => { - const num = parseInt(match.replace(/\D/g, ''), 10); - return String.fromCharCode(num); + // Decodificador genérico para cualquier otra entidad numérica residual (&#...;) + return decoded.replace(/&#(\d+);/g, (match, dec) => { + return String.fromCharCode(parseInt(dec, 10)); }); }