Foros del Web » Programando para Internet » PHP »

extraer una parte del texto

Estas en el tema de extraer una parte del texto en el foro de PHP en Foros del Web. Hola tengo almacenado en mi base de datos uno textos y quiero mostrar en pantalla solo la primera linea del texto con un enlace sobre ...
  #1 (permalink)  
Antiguo 23/04/2011, 13:06
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
extraer una parte del texto

Hola tengo almacenado en mi base de datos uno textos y quiero mostrar en pantalla solo la primera linea del texto con un enlace sobre esta linea que muestre el texto entero.

He estado mirando por internet tutoriales pero no me aclaro alguna ayudita o consejo, saludos.
  #2 (permalink)  
Antiguo 23/04/2011, 13:25
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: extraer una parte del texto

Para mostrar una parte del texto utilizo esta función:
Código PHP:
Ver original
  1. <?
  2. function cortarTexto($texto, $longitud, $parte = 1)
  3. {
  4.            
  5.     if ($parte < 1 || strpos($texto, ' ') === false)
  6.     {
  7.         $parte = 1;
  8.     }
  9.     elseif ($parte > (strlen(substr($texto, 0, strrpos($texto, ' '))) / $longitud))
  10.     {
  11.         $parte = strlen(substr($texto, 0, strrpos($texto, ' '))) / $longitud;
  12.     }
  13.      
  14.     $desplazamiento = ($parte - 1) * $longitud;
  15.      
  16.     if (!$desplazamiento || substr($texto, $desplazamiento - 1, 1) == ' ')
  17.     {
  18.         $pos1 = $desplazamiento;
  19.     }
  20.     else
  21.     {
  22.         $pos1 = strpos($texto, ' ', $desplazamiento) + 1;
  23.     }
  24.      
  25.     if ($longitud <= ($pos1 - $desplazamiento))
  26.     {
  27.         $desplazamiento = $pos1;
  28.     }
  29.      
  30.     if (substr($texto, $desplazamiento + $longitud - 1, 1) == ' ')
  31.     {
  32.       $pos2 = $desplazamiento + $longitud;
  33.     }
  34.     elseif(strpos($texto, ' ', $desplazamiento + $longitud) !== false)
  35.     {
  36.         $pos2 = strpos($texto, ' ', $desplazamiento + $longitud);
  37.     }
  38.     else
  39.     {
  40.         $pos2 = strlen($texto);
  41.     }
  42.      
  43.     return substr($texto, $pos1, $pos2 - $pos1);
  44. }
  45. ?>
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #3 (permalink)  
Antiguo 23/04/2011, 13:45
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: extraer una parte del texto

Gracias pero luego cuando muestras en pantalla quiero que lo que muestras sea un enlace hacia el texto completo como seria
  #4 (permalink)  
Antiguo 23/04/2011, 14:13
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: extraer una parte del texto

simplemente a la salida de la función la encierras con <a>...</a>
Por ejemplo

Código PHP:
Ver original
  1. $longitud= 50    //Cantidad de caracteres que quieres mostrar.
  2. $minitexto=cortarTexto($texto, $longitud, 0)
  3.  
  4. echo "<a href="enlaceatextocompleto.php"> $minitexto </a>";
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #5 (permalink)  
Antiguo 23/04/2011, 17:11
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: extraer una parte del texto

Código PHP:
Ver original
  1. $cadena = "El texto que quieras mostrar";
  2. $largo = 10; // La cantidad de caracteres que quieres mostrar.
  3.  
  4. $mostrar = substr($cadena,0,10);
  5.  
  6. echo "<a href="pagina.php"> $mostrar </a>";

O bien si lo quieres mas cocinado, adaptando un poco la función que C2am nos ha puesto y como dices que lo tienes en una base de datos:
Código PHP:
Ver original
  1. function cortarTexto_Enlace($texto, $longitud, $archivo, $enlace_todo, $parte = 1 )
  2. {            
  3.     if ($parte < 1 || strpos($texto, ' ') === false)
  4.          $parte = 1;
  5.       elseif ($parte > (strlen(substr($texto, 0, strrpos($texto, ' '))) / $longitud))
  6.            $parte = strlen(substr($texto, 0, strrpos($texto, ' '))) / $longitud;  
  7.      
  8.     $desplazamiento = ($parte - 1) * $longitud;
  9.      
  10.     if (!$desplazamiento || substr($texto, $desplazamiento - 1, 1) == ' ')  
  11.        $pos1 = $desplazamiento;
  12.      else
  13.          $pos1 = strpos($texto, ' ', $desplazamiento) + 1;
  14.      
  15.     if ($longitud <= ($pos1 - $desplazamiento))    
  16.       $desplazamiento = $pos1;    
  17.      
  18.     if (substr($texto, $desplazamiento + $longitud - 1, 1) == ' ')
  19.        $pos2 = $desplazamiento + $longitud;  
  20.       elseif(strpos($texto, ' ', $desplazamiento + $longitud) !== false)  
  21.          $pos2 = strpos($texto, ' ', $desplazamiento + $longitud);  
  22.         else      
  23.            $pos2 = strlen($texto);  
  24.      
  25.      $cadena = substr($texto, $pos1, $pos2 - $pos1);
  26.      
  27.      if($enlace_todo)
  28.        return "<a href='".$archivo."'>".$cadena."..... Leer Mas</a>";
  29.       else
  30.         return $texto;    
  31. }

Esta la consulta php, todo en el mismo archivo.
Código PHP:
Ver original
  1. /******* Inicio Parte a Configurar  *****/
  2.  
  3.   $archivo = "archivo.php";//El nombre de este archivo
  4.  $largo = 10; //Cantidad de caracteres a mostrar en el enlace
  5.  
  6.  /********* Fin Parte a configurar ******/
  7.                                                                
  8. $donde = ($_GET['id']) ?  " WHERE id = '".$_GET['id']."'" : "";
  9.    
  10. $sql ="SELECT id, texto FROM tabla_datos";   //Poner los datos oportunos
  11. $sql .= $donde;
  12. $sql = mysql_query($sql);
  13. while($elDato = mysql_fetch_assoc($sql))
  14. {            
  15.    $pasa_externo = (is_numeric($es_externo))? 1 : "";    
  16.              
  17.    if(!$_GET['id'])
  18.    {
  19.       $pasa_enlace = true;
  20.       $meteGet = "?id=".$elDato['id'];
  21.       $archivo .= $meteGet;    
  22.    }
  23.    else
  24.    {
  25.       $pasa_enlace = false;    
  26.    }
  27.    echo cortarTexto_Enlace($elDato['texto'],$largo, $archivo, $pasa_enlace);
  28. }

La idea es esta y no lo he probado:
-Se carga el archivo y muestra el listado de enlaces como tu los quieres seguidos de los típicos puntos y el "Leer Mas".
-Si se hace click en un enlace se carga el mismo archivo pero ahora mostrará todo el texto.

Saludos
  #6 (permalink)  
Antiguo 26/04/2011, 05:00
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: extraer una parte del texto

gracias lo probare y hos dire algo un saludo a todos los visitantes de este foro

Etiquetas: Ninguno
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:22.