Foros del Web » Programando para Internet » PHP »

Cerrar tags html

Estas en el tema de Cerrar tags html en el foro de PHP en Foros del Web. Tengo una pagina donde se muetran parte de notas (350 caracteres), el editor para hacerlo es WYSIWYG y al cortar la cadena hay tags html ...
  #1 (permalink)  
Antiguo 26/06/2006, 09:34
 
Fecha de Ingreso: febrero-2004
Ubicación: Resistencia - Argentina
Mensajes: 299
Antigüedad: 13 años, 9 meses
Puntos: 0
Cerrar tags html

Tengo una pagina donde se muetran parte de notas (350 caracteres), el editor para hacerlo es WYSIWYG y al cortar la cadena hay tags html que no se cierran y al mostrar el resumen queda corrido si es que el corte se da en algun tag como <table>, pregunta:
hay alguna funcion/clase para cerrar automaticamente tags html?
  #2 (permalink)  
Antiguo 27/06/2006, 07:01
 
Fecha de Ingreso: febrero-2004
Ubicación: Resistencia - Argentina
Mensajes: 299
Antigüedad: 13 años, 9 meses
Puntos: 0
estuve viendo algo de expresiones regulares y lo que quiero hacer es armar dos arreglos, uno con los tags abiertos y otros con los tags cerrados, hacer una comparacion y cerrar los que estan abiertos, pero no puedo hacer los arreglos, este codigo extrae todos los tags, cerrados y abiertos:

Cita:
<?php

preg_match_all("/\<[^>]*>/", "<b>ejemplo: </b><div align=left>esta es una prueba</div>", $salida, PREG_PATTERN_ORDER);
$el = $salida[0];

for($i=0;$i<=count($el);$i++){
echo $el[$i];
}

?>
  #3 (permalink)  
Antiguo 27/06/2006, 09:01
 
Fecha de Ingreso: febrero-2004
Ubicación: Resistencia - Argentina
Mensajes: 299
Antigüedad: 13 años, 9 meses
Puntos: 0
hice esta funcion, por si a alguien le sirve:

Cita:
function cierratags($cadena) {

$str_cierre = "";

//tags de apertura
preg_match_all("/\<[^\/][^>]*>/", $cadena, $salida, PREG_PATTERN_ORDER);

$arr_abiertos = $salida[0];

$total_abiertos = count($arr_abiertos);

//tags de cierre
preg_match_all("/\<[\/][^>]*>/", $cadena, $salida, PREG_PATTERN_ORDER);

$arr_cerrados = $salida[0];

$total_cerrados = count($arr_cerrados);

if($total_abiertos!=$total_cerrados) {
$total_sincerrar = $total_abiertos - $total_cerrados;


for($i=0;$i<=$total_sincerrar;$i++){

$str_cierre.= str_replace("<","</",$arr_abiertos[$total_cerrados + $i]);

}

}

return $cadena . $str_cierre;

}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.