2011-10-04 21 views
8

Estoy usando tidy para limpiar y formatear el resultado de HTML generado por el twig template engine.Áreas de orden y texto de Php

estoy usando la siguiente configuración para poner en orden:

$config = array('indent' => TRUE, 'output-html' => TRUE, 'wrap' => 0); 

todo funciona bien y bien, excepto cuando se llega a las áreas de texto.

Así es el fragmento sucios:

<textarea id="words" 
     rows="10"  cols="50"     >sdfds</textarea> 

Mientras que el formato es muy desordenado, el valor correcto se emite en el área de texto: 'sdfds' sin ningún espacio en blanco antes o después.

Este es el formato de limpiar después de usar ordenada:

   <textarea id="words" name="words" rows="10" cols="50" title="prompt"> 
sdfds 
</textarea> 

Como puede verse, el margen de beneficio es mucho más limpio ahora, pero ordenada ha introducido un salto de línea después de 'sdfds', lo que significa que el cursor se encuentra ahora señalando la línea después de 'sdfds' cuando se ve en el navegador.

Esto es bastante molesto, y no estoy seguro de cómo lidiar con esto. Yo todavía quiere tener la etiqueta textarea limpiado, pero preferiría que se formatee este modo:

<textarea id="words" name="words" rows="10" cols="50" title="prompt">sdfds</textarea> 

nadie se ha ocupado de este problema antes? Si es así, ¿cómo puedo ordenar que no se introduzcan esos espacios en blanco para la etiqueta textarea?

Respuesta

0

Si sdfds está superado con php, tendrá que agregar otra opción de configuración.

$config = array('indent' => TRUE, 'output-html' => TRUE, 'wrap' => 0, 'wrap-php' => 0); 

Envuelve solo las preocupaciones sobre html y cualquier declaración de php se trata como una nueva línea. Para obtener más información sobre las opciones de configuración, puede visitar: http://tidy.sourceforge.net/docs/quickref.html

+0

Desafortunadamente sdfds no es generada por php. El HTML se genera como una cadena por ramita. – F21

+0

Twig agrega el código php a los datos de eco de un archivo o una base de datos. Agregue wrap-php, si eso no funciona reemplace 0 con falso. –

+0

He intentado usar 0 y False para el parámetro 'wrap-php', pero sigo obteniendo el mismo resultado. Es posible que sea debido al área de texto que se extrae de otro archivo de plantilla de ramita usando 'block()'. – F21

0

Cuando use indent => true, se arruinará texareas con tidy. Se pone ordenado porque incluso el valor de textareas está sangrado. Si desea que sus áreas de texto parezcan correctas, puede establecer sangrado => falso. Esto ordenará tu HTML, pero también dejará tu área de texto con el mismo valor después de aplicar tidy. He visto que hay algunos parches que resuelven el problema, pero luego debe compilarlos. También puedes hacer esto con PHP pero luego estás ordenando ordenado.

+0

Todavía veo el mismo problema con 'indent => false'. También he intentado configurar 'output-html' como' true' o 'false', pero sigo teniendo el mismo problema. – F21

+1

@phpdev Esto es cierto para la salida html, donde tidy agregará una nueva línea antes del valor exacto del área de texto. Esto se puede resolver utilizando output-xml => true en lugar de output-html => true. – dennis

+0

Gracias, Dennis. Eso parece haber resuelto el problema, ¡pero luego introdujo otro! Debido a output-xml agregando una etiqueta de cierre, '' ahora es '', ahora no se puede validar como HTML 4.01 Strict: 'utilizando etiquetas de cierre automático de estilo XHTML (como ) en HTML 4.01 o versiones anteriores. Para solucionarlo, elimine el carácter de barra oblicua adicional ('/'). Para obtener más información sobre las razones para esto, vea Elementos vacíos en SGML, HTML, XML y XHTML. – F21

0

Tidy puede ser un poco "complicado" a veces y necesita un mayor refinamiento con rexep, aquí hay una solución que pondrá el cursor en la misma línea en la salida final, por lo que la usabilidad no se resiente. Simplemente ejecute el canal html ordenado:

$subject = preg_replace('%(\r\n|\n)(?=</textarea>)%sim', '', $subject); 
-1

Simplemente use la función de recorte para el área de texto. Y obtendrá lo que está buscando

Cuestiones relacionadas