Foros del Web » Programando para Internet » PHP »

Contar letras de una cadena hasta cierto punto

Estas en el tema de Contar letras de una cadena hasta cierto punto en el foro de PHP en Foros del Web. Hola amigos. El caso es que estoy haciendo un buscador y he preguntado en este mismo foro cómo mostrar un trozo de texto a partir ...
  #1 (permalink)  
Antiguo 14/01/2010, 05:06
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Contar letras de una cadena hasta cierto punto

Hola amigos.
El caso es que estoy haciendo un buscador y he preguntado en este mismo foro cómo mostrar un trozo de texto a partir de una coincidencia.

Me han recomendado substr() pero surge un problema. Esta función me corta un trozo de texto desde el inicio (numero de caracteres por donde empezar) y final (número en donde acabar).

El tema es que en los resultados del buscador, muestro un trozo de texto a partir de la coincidencia de cadena. Es decir, si buscó Makoki y hay un tema que diga:

Cita:
Todo esto no sería posible sin Makoki, nuestro querido amigo....
Sólo le mostrará lo siguiente debajo del resultado:

Cita:
Makoki, nuestro querido amigo....
Para ello, necesito contar las letras de toda la cadena de búsqueda, pero cuando llegue a Makoki (cadena de búsqueda) parar y devolver el número de caracteres.

A alguien se le ocurre cómo hacerlo?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #2 (permalink)  
Antiguo 14/01/2010, 06:14
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Contar letras de una cadena hasta cierto punto

intente entender tu problema.. pero yo hablo phpñol no español al parecer.. puedes poner un poco de codigo de lo que estas intentando hacer.. o explicarte un poco mejor para poder ayudarte?
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 14/01/2010, 06:30
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: Contar letras de una cadena hasta cierto punto

Hla amigo gracias por tu ayuda. El buscador está muy verde pero lo voy a reemplazar con sentencias MATCH ... AGAINST de sql.
Por ahora tengo esto:
Código PHP:
Ver original
  1. include("datos_usuario_db.php");
  2.  
  3.  
  4. $cadenaBusqueda=$_POST['cadenaBusqueda'];
  5. $dondeBuscar=$_POST['dondeBuscar'];
  6.  
  7. if($dondeBuscar=="todos") {
  8.  
  9.         $conexion=mysql_connect($dbserver,$dbuser,$dbpass);
  10.         mysql_select_db($db,$conexion);
  11.  
  12.         $sql="SELECT * FROM gap_foro_mensajes WHERE asunto LIKE '%".$cadenaBusqueda."%' OR mensaje LIKE '%".$cadenaBusqueda."%' ORDER BY id DESC;";
  13.         $result=mysql_query($sql,$conexion);
  14. $cuantosMsgForo=mysql_num_rows($result);
  15. $contenidoAMeter="<tr><td width=100% colspan=3 style='font-weight:bold;background-color:#565656;color:white;-moz-border-radius:8px 8px 0px 0px;'>".$cuantosMsgForo." resultados en el foro</td></tr>";
  16.         while($row=@mysql_fetch_array($result)) {
  17.            
  18.             if($bandera==0) { $colorFondo="#FFE7D7"; $bandera=1; } else { $colorFondo="#FFE0CE"; $bandera=0; }
  19.             $contenidoAMeter.="<tr style=background-color:".$colorFondo.";><td width=50% style='border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#C8C8C8;'><a href='javascript:;' onclick=\\\"javascript:leerMsgForoDesdeIndex(".$row['id'].",'1&marcar=".$cadenaBusqueda."');\\\">".$row['asunto']."</a></td><td width=25% align=center style=border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#C8C8C8;>".$row['user']."</td><td width=25% style='border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#C8C8C8;border-right-width:1px;border-right-style:solid;border-right-color:#C8C8C8;' align=center>".$row['fecha']."</td></tr>";
  20.    
  21.         }
  22.         @mysql_free_result($result);
  23.         mysql_close($conexion);
  24.  
  25. }

Bueno, el tema es que funciona. Ahora voy a mejorarlo exprimiendo dentro del while otra consulta a las respuestas del foro que coincidan y no repetir los asuntos. Eso es cosa mía. Lo que ahora quiero es que después de la <tr> del resultado (asunto, usuario y fecha), venga otra <tr> donde pongo un trozo del texto del mensaje, a partir de la palabra encontrada. Lo explicaba esto bien en el post inicial. Imagínate que hay este texto en el foro:

Cita:
Hola amigos.
Recientemente, mediante el Juego de C, x propuso utilizar x como editor de texto conjuntamente en tiempo real, donde se ven claramente las modificaciones de otros y en el instante.
Ahora imagina que la cadena de búsqueda será tiempo real. Pues bien, el resultado sería :

Cita:
...tiempo real, donde se ven claramente las modificaciones de otros y en el instante...
Que busque tiempo real en la cadena lo haré con substr, pero luego necesito sacar todo lo que sobra de la cadena, es decir, mostrar sólo a partir de la cadena encontrada.

Me expliqué mejor ahora no?

Saludos y gracias.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #4 (permalink)  
Antiguo 14/01/2010, 07:08
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Contar letras de una cadena hasta cierto punto

Código PHP:
Ver original
  1. $texto = "Hola amigos.
  2. Recientemente, mediante el Juego de C, x propuso utilizar x como editor de texto conjuntamente en tiempo real, donde se ven claramente las modificaciones de otros y en el instante.";
  3. $busq = "tiempo real";
  4. $func = preg_match("/$busq{1}.+/is",$texto,$matches);
  5. print_r($matches);

guiate un poco con esto que hice.. si tienes dudas consulta!
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 14/01/2010, 07:11
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: Contar letras de una cadena hasta cierto punto

Entiendo que esto:
Código PHP:
Ver original
  1. $func = preg_match("/$busq{1}.+/is",$texto,$matches)
Busca una cadena en la variable $texto, y los traslada a un ¿array? $matches.
Pero lo que no entiendo es la expresión regular, se me dan muy mal. ¿Cómo puedes explicarme esa expresión?

Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #6 (permalink)  
Antiguo 14/01/2010, 07:35
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Contar letras de una cadena hasta cierto punto

solo te dice que busque en el texto donde aparesca una ves "tiempo real" luego todo el texto que venga despues de este..
__________________
More about me...
~ @rhyudek1
~ Github
  #7 (permalink)  
Antiguo 14/01/2010, 07:47
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: Contar letras de una cadena hasta cierto punto

Esto me sirve para mucho, mil gracias, cuando lo tenga un poco listo lo colgaré aquí.
Espero que no me surjan inconvenientes
Saludos.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Etiquetas: contar, letras, punto, cadenas
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 22:34.