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:56
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.
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 03:47.