Foros del Web » Programando para Internet » PHP »

Detectar una cadena texto y cortarlo

Estas en el tema de Detectar una cadena texto y cortarlo en el foro de PHP en Foros del Web. Hola Gente tengo un editor de texto que me genera por ejemplo el siguiente formato en un campo de la base(Mysql). Código HTML: <P> <span ...
  #1 (permalink)  
Antiguo 01/06/2006, 04:37
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Detectar una cadena texto y cortarlo

Hola Gente tengo un editor de texto que me genera por ejemplo el siguiente formato en un campo de la base(Mysql).

Código HTML:
<P><span class="gris">fds</span></p> 
El tema es que yo a esta cadena de texto tengo que cortarla si es mayor a x caracteres para lo cual tengo algo asi:

Código PHP:
function resumen2($frase_entrada,$cortar){ 
if (
strlen($frase_entrada) > $cortar){ 
   
$frase_corta=substr($frase_entrada,0,$cortar); // obtener la frase cortada. 
   
$palabras=str_word_count($frase_corta,1); // obtener array con las palabras. 
   
$total_palabras=count($palabras)-1// contar total array elementos y restar 1 elementos 
   
$palabras=array_splice($palabras,0,$total_palabras); // le quitamos la ultima palabra. 
   
$frase_salida=implode(' ',$palabras); //  y concatenamos con el espacio hacia una cadena. 
   
$frase_salida .= "..."// se añaden los puntos suspensivos a la cadena obtenida.. 
   
}else{
   
$frase_salida=$frase_entrada;
   }
  return 
$frase_salida

Obvio que el problema esta en que dentro de los caracteres me esta tomando las etiquetas de html que tengo dentro, ¿Se les ocurre como poder separar esta cadena a los efectos que lo que corte sea realmente la cadena de texto y no los tag de html incluidos?

Desde ya muchas gracias.
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #2 (permalink)  
Antiguo 01/06/2006, 08:42
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Antes de procesar la cadena pásale strip_tags()

$frase_entrada=strip_tags($frase_entrada);
$frase_salida=resumen2($frase_entrada,$cortar);
  #3 (permalink)  
Antiguo 02/06/2006, 08:13
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Gracias, lo pruebo y te cuento
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #4 (permalink)  
Antiguo 14/06/2006, 09:56
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Ok, lo pruebo y funciona, pero...
El problema que ahora tengo es que luego de cortar la cadena la tengo que volver a mostrar con las etiquetas de html que tenia y no se como recuperlas.

¿Se entiende?
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #5 (permalink)  
Antiguo 14/06/2006, 10:57
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Muestra el codigo que usaste, para indicarte que corregir.
  #6 (permalink)  
Antiguo 14/06/2006, 21:42
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Código PHP:
function resumen2($frase_entrada,$cortar){ 
$frase_entrada=strip_tags($frase_entrada);
if (
strlen($frase_entrada) > $cortar){ 
   
$frase_corta=substr($frase_entrada,0,$cortar); // obtener la frase cortada. 
   
$palabras=str_word_count($frase_corta,1); // obtener array con las palabras. 
   
$total_palabras=count($palabras)-1// contar total array elementos y restar 1 elementos 
   
$palabras=array_splice($palabras,0,$total_palabras); // le quitamos la ultima palabra. 
   
$frase_salida=implode(' ',$palabras); //  y concatenamos con el espacio hacia una cadena. 
   
$frase_salida .= "..."// se añaden los puntos suspensivos a la cadena obtenida.. 
   
}else{
   
$frase_salida=$frase_entrada;
   }
  return 
$frase_salida

__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #7 (permalink)  
Antiguo 15/06/2006, 07:53
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
No creo que necesites acceder a la cadena original dentro de la funcion, por tanto, sólo debes guardar en una variable el parametro $frase_entrada, que ya pasas a la funcion, es decir, ya lo tienes.
  #8 (permalink)  
Antiguo 16/06/2006, 05:00
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Perdon pero no lo entiendo, podrias explicarmelo sobre el codigo

desde ya muchas gracias
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #9 (permalink)  
Antiguo 16/06/2006, 08:05
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
en el minuto en que llamas a la funcion tu seguramente haces algo asi:

Código PHP:
<?php
   $cortar
=4;
   
$frase_entrada="<p>Hola mundo</p>";
   
$resumen=resumen2($frase_entrada,$cortar);
   ... 
?>
Como ves, $frase_entrada sigue teniendo su valor, $resumen tiene el resumen sin tags, es decir tienes ambos valores.
  #10 (permalink)  
Antiguo 24/08/2006, 04:03
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Retomo este proyecto despues de un tiempo y continuo con el mismo problema, voy a intentar aclarar:

Tengo una cadena de texto, supongamos algo asi :

Código HTML:
<span class="gris">esta</span><span class="rojo">es la cadena</span> 
Mediante la funcion de la cual se hablo arriba lo que hago es sacarle los tag y cortarla en un numero x de caracteres, hasta aca todo bien, el problema es cuando quiero volver a mostrar el resultado por ejemplo yo quiero que me quede algo de este tipo

Código HTML:
<span class="gris">esta</span><span class="rojo">es la....</span> 
Pero me queda asi

Código HTML:
esta es la.....
Osea sin los tag, no logro que despues de cortarla vuelva a mostrarse con los tag que tenia antes.

Como puedo hacer?

Gracias.
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
  #11 (permalink)  
Antiguo 06/09/2006, 18:12
cmc
 
Fecha de Ingreso: febrero-2003
Ubicación: Capital
Mensajes: 1.317
Antigüedad: 21 años, 2 meses
Puntos: 1
Hola gente, continuo sin poder resolver este problema, el que me pueda dar una mano se lo voy a agradecer.....
__________________
Claudio Caldareri
diseñador Multimedial
www.disemedios.com.ar
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 19:33.