Estoy tratando de obtener texto de HTML con sus propiedades (negrita, subrayado, cursiva, superíndice, etc.) pero tengo problemas con los anidados (como <b> Lorem <u> Ipsum </u></b> , en este caso Lorem debe estar en negrita e Ipsum debe estar en negrita y subrayado).
Datos de ejemplo
<p> Normal<b>Bold</b> <b>Bold<u>Underlined</u></b> <b><i>Bold Italic</i></b><p/>
Necesito usar estos textos en Indesign Script y necesito asignar estilos de carácter para estas propiedades. ¿Hay alguna herramienta o técnica para PHP o Javascript que pueda usar?
Pruebe si DOMParser está disponible en el entorno donde va a ejecutar su código JS.
Esto analiza la cadena html y genera una estructura de árbol de los nodos y sus textos.
const htmlString = '<p> Normal<b>Bold</b> <b>Bold<u>Underlined</u></b> <b><i>Bold Italic</i></b><p/>'; const htmlElement = (new DOMParser().parseFromString(htmlString, 'text/html')).firstChild.childNodes[1].firstChild; const tree = convertDomToArray(htmlElement); console.log(tree); function convertDomToArray(element) { if (element.nodeName === '#text') { return element.nodeValue; } let children = []; for (let childElement of element.childNodes) { children.push(convertDomToArray(childElement)); } let output = {}; output[element.nodeName] = children; return output; }