Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/01/2013, 08:15
yosoloyo
 
Fecha de Ingreso: mayo-2008
Mensajes: 156
Antigüedad: 16 años
Puntos: 0
Respuesta: Al crear un leer mas, se descuadra HTML

Cita:
Iniciado por cuasatar Ver Mensaje
Bueno, aunque no tengo a la mano como lo hice yo yo no me preocuparia mucho en ese sentido. En mi caso en concreto le coloco muy poco texto por lo cual las posibilidades de que el texto cortado sea parte de un nuevo parrafo son bastante reducidas.

Lo que podrias hacer es eliminarle las etiquetas, con el substr buscas por decir algo los primeros 400 caracteres, de ese texto que tienes buscas donde se encuentra el ultimo espacio en blanco y vuelves a realizar el substr desde 0 hasta donde fue encontrado el ultimo espacio en blanco de esta forma nunca se quedara cortado en la mitad de una palabra.

En caso de que necesites colocar por ejemplo al menos dos parrafos se complicaria un poco mas y te tocaria quitar las etiquetas, buscar los puntos aparte y añadirle un <br /> para separar los parrafos pero me parece que ya es mas complicado.
Gracias por la respuesta. Lo de cortar el texto en medio de una palabra no es mi caso, es decir, lo recorro una segunda vez como bien dices hasta el espacio en blanco para que no se corte en medio de la última palabra recogida por ejemplo.

Lo de quitar las etiquetas, también lo he pensado pero como digo en el mensaje 1, queda un texto plano que se ve muy feo (aunque deje por ejemplo el <br / > entre las etiquetas permitidas, pero aún asi se queda bastante feo.

Pongo un ejemplo mas extenso con lo que ocurre:

Código PHP:
Ver original
  1. $texto="<p> Hola, adios, hasta luego, que tal, uno dos tres 1000 </p>";

Si de aquí extraigo con substr por ejemplo 10 caracteres, recoge la etiqueta <p> inicial, pero no la última, por lo que hay un descuadre a partir de ahi con el resto de html que tiene el resto de la página. Cuando pongo ejemplo de <p>, es como si pusiera <div> <b>, <em>, vamos cualquier etiqueta que por el corte de caracteres al hacer substr se queda como texto final (sin contar el 2º recorrido para evitar el corte de una palabra como bien dijiste también).

He visto como posible alternativa (aunque aún no la he podido probar: count_chars y substr_count que por ejemplo tendría que recorrer la cadena varias veces para que me dijera el número total de etiquetas que hay y a partir de ahi actuar en consecuencia añadiendo sus cierres a la etiqueta que quede de substr.

De ahi el pedir ayuda, dado que no se si es lo más adecuado o si hay algún método preestablecido ya que lo haga por si solo.

Gracias de nuevo por tu aportación