Foros del Web » Programando para Internet » PHP »

Funcion para recortar texto y etiquetas html

Estas en el tema de Funcion para recortar texto y etiquetas html en el foro de PHP en Foros del Web. Buenas tardes, Tengo la siguiente función, que recorta el texto a un número determinado de caracteres y cierra todas las etiquetas de forma automática. Código ...
  #1 (permalink)  
Antiguo 18/04/2011, 08:43
 
Fecha de Ingreso: enero-2007
Mensajes: 158
Antigüedad: 17 años, 3 meses
Puntos: 2
Funcion para recortar texto y etiquetas html

Buenas tardes,
Tengo la siguiente función, que recorta el texto a un número determinado de caracteres y cierra todas las etiquetas de forma automática.

Código PHP:
function cerrar_etiquetas($input)
    {
        
$opened = array(); // loop through opened and closed tags in order 
        
if(preg_match_all("/<(\/?[a-z]+)>?/i"$input$matches))
        {
            foreach(
$matches[1] as $tag)
            {
                if(
preg_match("/^[a-z]+$/i"$tag$regs))
                {
                    
// a tag has been opened 
                    
if(strtolower($regs[0]) != 'br'$opened[] = $regs[0];
                }
                else if(
preg_match("/^\/([a-z]+)$/i"$tag$regs))
                {
                    
// a tag has been closed 
                    
unset($opened[array_pop(array_keys($opened$regs[1]))]);
                }
            }
        }
        
// close tags that are still open 
        
if($opened)
        {
            
$tagstoclose array_reverse($opened);
            foreach(
$tagstoclose as $tag$input .= "</$tag>";
        }
        return 
$input;
    }

cerrar_etiquetas(substr($noticia,0,$posicion)); 
El problema que tengo es cuando añado una imagen o cualquier otra etiqueta que no tiene cierre. Es decir, una imagen se cierra así /> y no así </img> La funcion esa cierra la imagen así </img>.

Alguien me podría ayudar a modificar esa función para corregir esos problemas, por favor? un cordial saludo a todos!

Etiquetas: etiquetas, funcion, html, recortar
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 22:06.