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($not, 0,$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.