2009-12-26 23 views
12

Tengo una clase que genera algunos html (elementos de formulario y elementos de tabla), pero esta clase devuelve todo el html en una línea.Impedir que se agreguen etiquetas html

Así que estoy tratando de usar ordenado para embellecer el código (sangrar el código, poner saltos de línea, etc.), el único problema que tengo es que también está generando las etiquetas que no quiero.

Aquí está el código:

tidy_parse_string(
        $table->getHtml(), 
        array(
          'DocType' => 'omit', 
          'indent' => true, 
          'indent-spaces' => 4,          
          'wrap' => 0          
         ) 
       ); 

La única manera que he encontrado para quitar las etiquetas HTML adicional es mediante la adición de un str_replace, algo como esto:

str_replace(array('<html>','</html>','<body>','</body>','<head>','</head>','<title>','</title>'),'', code); 

que funciona, pero yo En realidad estaba saltando, habría una manera de decir ordenado para embellecer el código y no insertar el código adicional.

Respuesta

28

Pruebe la opción show-body-only.

p. Ej.

$s = '<form method="post" action="?"><table><tr><td><input tpye="submit"></table>'; 
echo tidy_parse_string($s, array('show-body-only'=>true, 'indent'=>true)); 

impresiones

<form method="post" action="?"> 
    <table> 
    <tr> 
     <td> 
     <input tpye="submit"> 
     </td> 
    </tr> 
    </table> 
</form> 

(cuerdas ha sido reparado y con sangría, pero sin envoltura html/cuerpo añadido). Se puede combinar con la opción output-xhtml que en este caso también agregaría la barra para el elemento de entrada vacío.

+0

No puedo creer que haya perdido esa opción. ¡¡Gracias!! – AntonioCS

+0

Querido señor. Esto es exactamente lo que necesitaba, ¡pero nunca lo habría adivinado por el nombre de la opción o incluso su descripción! –

+1

¿Qué sucede si quiero cargar HTML pero mostrarlo por XML? output-xml = true, por lo que show-body-only no funciona. ¿Cómo hacer en ese caso? –

Cuestiones relacionadas