const decodeContent = (html) => {
if (!html) return html;
// Decode numeric HTML entities first
let decoded = html
.replace(/"/g, '"') // ” - Right double quote
.replace(/"/g, '"') // “ - Left double quote
.replace(/'/g, "'") // ’ - Right single quote
.replace(/'/g, "'") // ‘ - Left single quote
.replace(/–/g, '-') // – - En dash
.replace(/—/g, '—') // — - Em dash
.replace(/…/g, '…') // … - Ellipsis
.replace(/"/g, '"') // ″ - Double quote
.replace(/'/g, "'") // ′ - Single quote
// Decode Unicode characters
.replace(/”/g, '"') // Right double quote
.replace(/“/g, '"') // Left double quote
.replace(/‘/g, "'") // Left single quote
.replace(/’/g, "'") // Right single quote
.replace(/–/g, '-') // En dash
.replace(/—/g, '—') // — - Em dash
.replace(/…/g, '…') // … - Ellipsis
.replace(/″/g, '"') // Double quote
.replace(/′/g, "'") // Single quote
// Decode named HTML entities
.replace(/"/g, '"')
.replace(/'/g, "'");
// Also handle any remaining numeric entities
decoded = decoded.replace(/(\d+);/g, (match, code) => {
return String.fromCharCode(parseInt(code, 10));
});
return decoded;
};
const raw = 'video_mp4=”https://klz-cables.com/wp-content/uploads/2025/02/header.mp4”';
console.log('Raw:', raw);
console.log('Decoded:', decodeContent(raw));
const raw2 = 'video_mp4=”https://klz-cables.com/wp-content/uploads/2025/02/header.mp4”';
console.log('\nRaw2:', raw2);
console.log('Decoded2:', decodeContent(raw2));