Foros del Web » Programando para Internet » PHP »

Cortar cadena de texto con etiquetas html

Estas en el tema de Cortar cadena de texto con etiquetas html en el foro de PHP en Foros del Web. Buenas, mi problema es que tengo una sección de noticias y en la página principal sólo quiero que aparezcan los 230 primeros caracteres. La noticia ...
  #1 (permalink)  
Antiguo 08/11/2006, 08:57
Avatar de Yagorat  
Fecha de Ingreso: marzo-2002
Ubicación: Madrid
Mensajes: 161
Antigüedad: 22 años, 1 mes
Puntos: 0
Cortar cadena de texto con etiquetas html

Buenas, mi problema es que tengo una sección de noticias y en la página principal sólo quiero que aparezcan los 230 primeros caracteres. La noticia está en una base de datos y ya esta "formateada" con etiquetas html.
Esta es la función:
Código PHP:
function noticia($not,$tamano) {
$contador 0;
$contador2 0;
$i 0;

do{
    if (
strlen($not) <= $tamano) return $not;
    if (
$not[$contador2]=="<"$i 1;
    if (
$not[$contador2]==">"$i 0;
    if (
$i== 0$contador++;
    
$contador2++;

}while(!((
$contador $tamano) && ($not[$contador2]==" ")));
    
$cadena substr($not0,$contador2+1)."...";
    if (
$contador <= $tamano) return $not;
return  
$cadena;


Con esta función para salir al paso me funciona excepto cuando me deja una etique sin cerrar al llegar al limite impuesto por $tamano, es decir, que a veces termina "<b>Hola" y no sale </b>

Un ejemplo de noticia sería este:
"<span class="cxboxbody"> Scenes of valor and righteous might will meet your eyes if you peruse the online art gallery for <em>Champions of Valor.</em> You'll also see a few creatures and more when you take a look at the art that fills this <strong>Forgotten Realms </strong> supplement. </span><span class="cxboxbody"> </span>"

La funcion la he hecho para que no me corte una palabra, sino que continue hasta terminarla, pero no se que hacer cuando me deja una etiqueta sin cerrar. Tal vez exista un metodo directo, pero no lo he encontrado.

Gracias por adelantado.
__________________
Más sabe el diablo por viejo que por diablo.
  #2 (permalink)  
Antiguo 08/11/2006, 11:12
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Pues por lo que sé, no existe una funcion en php que que resuelva tu necesidad. Yo te recomendaria que eliminaras momentariamente las etiquetas con strip_tags() lo aplicaras algun "estilo" a este texto y ya cuando muestres la noticia la muestres de forma normal.

Saludillos.
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 11:29.