Tengo un editor tinymce implementado en mi proyecto de reacción instalado a través del paquete
"@tinymce/tinymce-react": "^3.12.6".Estoy tratando de preservar los saltos de línea de espacio en blanco de los datos que provienen de una fuente externa (archivo de Excel) cuando se editan en el editor wysiwyg, pero no he podido hacerlo. He probado las opciones como force_br_newlines y convert_newlines_to_brs pero no parece ayudar
Explicación detallada del escenario:
Tengo un archivo de Excel que tiene texto de varias líneas que se importa a la aplicación. El texto de varias líneas se conserva en la base de datos y aparece el texto en varias líneas cuando lo registro en la consola. (La consola no genera caracteres de línea nueva \n, \r, etc. y solo saltos de línea de espacio en blanco como en el texto original). Pero, cuando edito los mismos datos con el editor tinymce, el editor tinymce pone todos los datos en una sola línea.
El texto original no es texto html y no podemos esperar que el usuario final escriba etiquetas HTML dentro del archivo de Excel como <p>...</p> or <br />
Datos de ejemplo en el archivo de Excel:
This is line one This is line two This is line threeDatos cuando se muestran en el editor:
This is line one This is line two This is line threeMe gustaría que el editor conserve los saltos de línea. ¿Es eso posible? ¿Cómo puede lograrse? Su ayuda sería muy apreciada. Gracias por adelantado.
TinyMCE es un editor de HTML, por lo que cuando le pasa una cadena de texto sin formato, lo está convirtiendo a HTML. Como los caracteres de nueva línea, etc., no son HTML válidos, simplemente se eliminan.
Si tiene nuevas líneas en su contenido, puede convertirlas a algún tipo de HTML válido.
Cuando extrae contenido de TinyMCE, tiene la opción de obtener texto sin formato y convertirá párrafos (etiquetas <p> ) en 2 líneas nuevas ( \n\n ) y saltos de línea (etiquetas <br> ) en una línea nueva ( \n ) . Puede hacer lo contrario con su archivo de texto para crear HTML que represente los saltos de línea de manera adecuada.
Por lo que sé, ahora hay una forma de lograrlo con TinyMCE, por las razones descritas por @micheal-fromin.
Lo mejor que puede hacer es buscar nuevas líneas ( \n y/o \r ) en el texto fuente y reemplazarlas con saltos de línea HTML ( </br> ).
PHP tiene una función muy útil que hace exactamente eso: nl2br() .
El problema con nl2br es que también reemplazará las líneas nuevas dentro de las etiquetas HTML. Si eso es un problema para ti, te recomiendo reemplazar bloques de texto con etiquetas de párrafo ( <p> ) usando autop() (PHP puro) o wpautop() (en WordPress).
En Javascript, nl2br traduce como:
function nl2br (str, is_xhtml) { var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>'; // Adjust comment to avoid issue on phpjs.org display return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2'); }