Foros del Web » Programando para Internet » PHP »

como hacer resumen de un texto

Estas en el tema de como hacer resumen de un texto en el foro de PHP en Foros del Web. hola mi consulta es como puedo hacer un resumen para la portada..osea k el usuario ingrese todo el texto que quiera...y en el la pagina ...
  #1 (permalink)  
Antiguo 02/02/2007, 11:41
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 18 años, 1 mes
Puntos: 1
como hacer resumen de un texto

hola

mi consulta es como puedo hacer un resumen para la portada..osea k el usuario ingrese todo el texto que quiera...y en el la pagina principal rescate el texto pero que sea un resumen de ese texto y despues haga click y vaya a la pgina donlos detalles de ess texto...

la pregunta es como hacer un resumen de ese texto..nada mas...

lo estaba intentando..contando palabras con funciones de php pero..necesito algo mas acabado.. y que al final de una palabra aprezcan tres puntos suspensivos

gracias
  #2 (permalink)  
Antiguo 02/02/2007, 12:57
Avatar de dmartinezn  
Fecha de Ingreso: enero-2006
Mensajes: 74
Antigüedad: 18 años, 4 meses
Puntos: 1
Re: como hacer resumen de un texto

Me parece que con esto resolverias

string substr ( string cadena, int comienzo [, int longitud] )


substr() devuelve la porción de cadena especificada por los parámetros comienzo y longitud.

Si comienzo es positivo o 0, la cadena devuelta comenzará en dicho carácter de cadena (los caracteres empiezan a contarse en cero). Por ejemplo, en la cadena 'abcdef', el carácter en la posición 0 es 'a', el carácter en la posición 2 es 'c', y así sucesivamente.

Ejemplo 1. Ejemplo básico de substr()

<?php
echo substr('abcdef', 1); // bcdef
echo substr('abcdef', 1, 3); // bcd
echo substr('abcdef', 0, 4); // abcd
echo substr('abcdef', 0, 8); // abcdef
echo substr('abcdef', -1, 1); // f

// El acceso a los caracteres dentro de una cadena se puede
// realizar directamente mediante las llaves
$string = 'abcdef';
echo $string{0}; // a
echo $string{3}; // d
echo $string{strlen($string)-1}; // f

?>
  #3 (permalink)  
Antiguo 02/02/2007, 15:06
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: como hacer resumen de un texto

Lo mejor es darle el trabajo a quien carga contenidos y no dejarlo fijo en el sistema (esto puedo romper una frase, no hablo de una palabra).
Hay dos maneras muy efectivas:
1- Poner aparte del textarea para el texto uno que sea para el texto este (texto corto, introducción, o como lo quieras llamar).
2- En el mismo texto hacer algo que ponga un corte (Ej: <!--Corte de texto-->) en el mismo, luego partirás el texto por este "corte" y mostraras en caso de existir la primer parte.
3- Si aún así crees que es mejor cortarlo avisame que tengo alguna que otra función por ahí que hace eso.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #4 (permalink)  
Antiguo 02/03/2007, 01:36
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 10 meses
Puntos: 3
Re: como hacer resumen de un texto

Hola,

A mí me pasa algo parecido. Utilizo la función substr para que sólo muestre en la página inicial un trozo de la noticia. No me importa que se corten las frases pero el problema es que se cortan las palabras y eso queda feo.

¿Hay alguna función que fuerce a php a coger toda la palabra entera y de esta manera no la corte?

Muchas gracias!!
  #5 (permalink)  
Antiguo 02/03/2007, 07:32
GPS
 
Fecha de Ingreso: diciembre-2003
Ubicación: Montevideo, Uruguay
Mensajes: 110
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: como hacer resumen de un texto

esta es la función que yo utilizo para esto

function breve_descripcion($texto) {
$cTexto=$texto;
$cad = (string) "";
$aPalabras = array();
$aPalabras = split(" ",$cTexto);
for ($i = 0; $i <10; $i++) $cad .= $aPalabras[$i].' ';
echo $cad." ...";
}
  #6 (permalink)  
Antiguo 02/03/2007, 07:33
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: como hacer resumen de un texto

No, no la hay. Yo tengo una función que hace bastante no uso pero seguro te servirá, además esta conjunta con otra que te saca el formato del texto (para que no te corte quedando "hola <font s ...").
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #7 (permalink)  
Antiguo 02/03/2007, 10:28
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 3 meses
Puntos: 5
Re: como hacer resumen de un texto

Cita:
Iniciado por damargon Ver Mensaje
Hola,

A mí me pasa algo parecido. Utilizo la función substr para que sólo muestre en la página inicial un trozo de la noticia. No me importa que se corten las frases pero el problema es que se cortan las palabras y eso queda feo.

¿Hay alguna función que fuerce a php a coger toda la palabra entera y de esta manera no la corte?

Muchas gracias!!
Amigo use esta función :

Código PHP:
function limitarPalabras($cadena$longitud$elipsis ' <b>...</b>') { 
    
$palabras explode(' '$cadena); 
    if (
count($palabras) > $longitud
    return 
implode(' 'array_slice($palabras0$longitud)) . $elipsis
    else 
    return 
$cadena
    } 
Donde $longitud va ser igual al numero de palabras que solo quieres mostrar en tu resumen.-

Explicación:
explode, count, implode

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com

Última edición por xyyy7; 06/03/2007 a las 13:32
  #8 (permalink)  
Antiguo 02/03/2007, 11:47
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 10 meses
Puntos: 3
Re: como hacer resumen de un texto

Muchas gracias a todos, cogiendo de uno y de otro he compuesto una función que me funciona a las mil maravillas. Es esta:

function breve_descripcion($texto, $caracteres) {

$cTexto=strip_tags(substr($texto,0,$caracteres)); //obtenemos el texto desde la posición 0 un número de caracteres dado y le quitamos las etiquetas html que pueda tener

$esp_vacios= substr_count($cTexto,' '); //obtenemos cuantos espacios de separación entre palabras hay.

$aPalabras = array(); //creamos el array

$aPalabras = explode(" ",$cTexto); // extraemos en un array las palabras

for ($i = 0; $i <$esp_vacios; $i++){
$cad .= $aPalabras[$i].' '; //recorremos el array y lo concatenamos en $cad
}
return $cad;
}

Se me olvidó comentar un detalle y es que el texto de la noticia no me lo traigo y lo corto en la función, sino que me traigo un número concreto de caracteres ($caracteres) y es de ahí de donde cuento las palabras y deshecho la última por si está cortada.

Muchas gracias por vuestra ayuda.

Saludos.
  #9 (permalink)  
Antiguo 02/03/2007, 12:50
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: como hacer resumen de un texto

Solo unos comentarios (si, no puedo con mi genio :P).

xyyy7, eso te corta por palabras y no por caracteres, no digo que este mal, pero cuando los espacios son muy justos puede romper un diseño.

damargon
, fijate de tratar de no usar un for para una tarea donde ya tenes funciones del lenguaje en si que te solucionan la vida...es consumir recursos sin fundamentos, y ninguna esta teniendo en cuenta el tema de que sea un texto formateado (hola <font color="#ff0000">mundo<font>).

Ya esta, ahora me siento sin culpa de no hacer la aclaración que creí necesaria.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #10 (permalink)  
Antiguo 02/03/2007, 13:02
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 10 meses
Puntos: 3
Re: como hacer resumen de un texto

Cita:
Iniciado por nicolaspar Ver Mensaje
Solo unos comentarios (si, no puedo con mi genio :P).

xyyy7, eso te corta por palabras y no por caracteres, no digo que este mal, pero cuando los espacios son muy justos puede romper un diseño.

damargon
, fijate de tratar de no usar un for para una tarea donde ya tenes funciones del lenguaje en si que te solucionan la vida...es consumir recursos sin fundamentos, y ninguna esta teniendo en cuenta el tema de que sea un texto formateado (hola <font color="#ff0000">mundo<font>).

Ya esta, ahora me siento sin culpa de no hacer la aclaración que creí necesaria.
Bueno, en mi caso tengo que limpiar el código HTML que recibo desde MySQL y que formatea el texto al mostrarlo en su página de noticia. Al que no lo interese que quite la función strip_tags y sanseacabó.

Si me puedes decir qué otras formas más aptas hay de recorrer un array y concatenar su elementos te lo agradecería y así podría optimizar este código. No sabía que un simple bucle for consumiera más recursos.

Saludos!
  #11 (permalink)  
Antiguo 02/03/2007, 13:08
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: como hacer resumen de un texto

Cita:
Iniciado por nicolaspar Ver Mensaje
No, no la hay. Yo tengo una función que hace bastante no uso pero seguro te servirá, además esta conjunta con otra que te saca el formato del texto (para que no te corte quedando "hola <font s ...").
Te habia dejado este ejemplo.


Edit, no había visto que habias puesto strip_tags().
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #12 (permalink)  
Antiguo 02/03/2007, 16:46
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 3 meses
Puntos: 5
Re: como hacer resumen de un texto

Cita:
Iniciado por nicolaspar Ver Mensaje
xyyy7, eso te corta por palabras y no por caracteres, no digo que este mal, pero cuando los espacios son muy justos puede romper un diseño.
Si eso eso muy cierto...

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
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 01:43.