Foros del Web » Programando para Internet » PHP »

Buscar palabra en String

Estas en el tema de Buscar palabra en String en el foro de PHP en Foros del Web. Conocen alguna funcion que me busque una palabra en un string: Código PHP: $string  =  "hola como caunto tiempo palabras palabra" ; $palabra  =  "palabra" ; if ( funcion ( $palabra ...
  #1 (permalink)  
Antiguo 17/02/2005, 19:45
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 14 años, 3 meses
Puntos: 0
Buscar palabra en String

Conocen alguna funcion que me busque una palabra en un string:

Código PHP:
$string "hola como caunto tiempo palabras palabra";
$palabra "palabra";

if (
funcion($palabrastring)) return true

algo como eso no c si me doy a entender
  #2 (permalink)  
Antiguo 17/02/2005, 20:01
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 13 años
Puntos: 0
bueno no si funcione, pero hize esto


<?
$string="Texto de varias palabras : hola , como estas";
$buscar="de";
$corte=explode(" ",$string);
for($a=0;$a<=count($corte);$a++){
if($corte[$a]==$buscar){
$corte[$a]="<b>".$corte[$a]."</b>";
} }
$unir=implode(" ",$corte);
echo $unir;
?>


saludoss ;)
  #3 (permalink)  
Antiguo 17/02/2005, 20:02
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 13 años
Puntos: 0
se me olvidaba, si encuentra la palabra le pone <b>palabra</b>

en este caso la palabra es "de"... entonces saldria:

Texto <b>de</b> varias palabras : hola , como estas
  #4 (permalink)  
Antiguo 21/02/2005, 20:00
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 14 años, 3 meses
Puntos: 0
Bueno lo pude hacer mas o menos solo que la cadena de texto que quiero solo se puede atravez de un while() y ahi me da problemas mira:

Código PHP:

while($registro=mysql_fetch_assoc($cct)){
    
$tipofotos=$registro['tipofoto']; 
    
$string $tipofotos;
    
$buscar1=$tf[1];
    
$buscar2=$tf[2];
    
$buscar3=$tf[3];
    
$corte=explode(" ",$string);
    echo 
$string// este me imprime una larga cadena que es la que quiero, pero no tengo opcion a usarla fuera del while()
    
}
    echo 
$string// sta solo me coge una palabra de la cadena
    
for($a=0;$a<=count($corte);$a++){
        switch(
$corte[$a]){
        
        case 
$buscar1 : echo "<a href =\"?seccion=vfm&idc=".$registro['id_concursante']."&tf=".$tf[1]."&lang=".$lang."\">Normal</a>&nbsp;";    

        case 
$buscar2 : echo "<a href =\"?seccion=vfm&idc=".$registro['id_concursante']."&tf=".$tf[2]."&lang=".$lang."\">Tipico</a>&nbsp;";    
        
        case 
$buscar3 : echo "<a href =\"?seccion=vfm&idc=".$registro['id_concursante']."&tf=".$tf[3]."&lang=".$lang."\">Traje baño</a>&nbsp;";    
        
         }
         } 
Como hago para usar la $string que esta dentro del while()
  #5 (permalink)  
Antiguo 21/02/2005, 20:40
 
Fecha de Ingreso: febrero-2005
Mensajes: 670
Antigüedad: 12 años, 10 meses
Puntos: 0
Necesitas que te diga si existe tal palabra dentro de un string?
Usá ereg http://ar.php.net/ereg

Suerte
Fede
__________________
Federico H. García
Desarrollo Web
www.federicog.com.ar

Última edición por thunder.scripts; 21/02/2005 a las 20:47
  #6 (permalink)  
Antiguo 21/02/2005, 21:05
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Para buscar dentro de una cadena puedes utilizar:
http://www.php.net/strstr (Case-sensitive)
o
http://www.php.net/stristr (Case-insensitive)

Saludos

Última edición por jpinedo; 21/02/2005 a las 21:08
  #7 (permalink)  
Antiguo 21/02/2005, 21:31
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 14 años, 3 meses
Puntos: 0
no me han entendido la cadena solo me sale con el while como puedo hacer para grabarla en una varible que me funcione fuera del while miren mi codigo que esta arriba
  #8 (permalink)  
Antiguo 21/02/2005, 22:13
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
A ver...
$string es una palabra.
Para cada registro esa palabra es diferente.
Cada vez que se ejecuta el while se sobreescribe esa palabra.
O sea que $string siempre contiene una sola palabra.
Lo que pasa es que se está imprimiendo una por una (a cada pasada del while) y tú estás creyendo que se ha imprimido todo junta sólo porque se ve amontonado....
Al final $string tiene el último valor que se le asignó.
Si lo que quieres es generar una cadena como la que se te imprime, puedes concatenar todo.
Código PHP:
$string '';// inicializas $string para poder concatenar
while($registro=mysql_fetch_assoc($cct)){
    
$tipofotos=$registro['tipofoto'];
    
$string .= $tipofotos;// nota que aquí concateno con el punto.
    //etc..etc 
Tampoco estás utilizando bien ese explode() dentro del while porque no tiene mucho sentido. Ni siquiera sé para qué necesitas esa larga cadena.

Saludos

Última edición por jpinedo; 21/02/2005 a las 22:16
  #9 (permalink)  
Antiguo 22/02/2005, 04:10
 
Fecha de Ingreso: noviembre-2004
Mensajes: 68
Antigüedad: 13 años
Puntos: 0
si pusieras lo que quieres hacer... seria mucho mejor
  #10 (permalink)  
Antiguo 22/02/2005, 15:13
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 14 años, 3 meses
Puntos: 0
Bien tengo una tabla asi:
Código PHP:
id_foto tipofoto id_concursante |  // hay mas campos pero son los que me interesan
|  1     |  normal |  mtp-bolivia       |
|   
2    |  tipico   |   mtp-bonaire     |
|   
3    |  tbano   |  mtp-bolivia       |
|   
4    |   tbano |   mtp-bolivia       
lo que quiero es selecionar un id_concursante y ver si este tiene en el campo de tipofoto; tipico,tbano o normal

para poner un ejemplo si selecciono una de esos id_concursante ver si en el campo tipofoto tengo tipico,normal o tbano, en caso de que tenga las tres o solo 2 de ellas, presentar un link de las que tenga.

no c si me di a entender
  #11 (permalink)  
Antiguo 22/02/2005, 21:07
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Eso lol puedes resolver desde el sql:
SELECT DISTINCT tipofoto FROM tuTabla WHERE id_concursante='$id';
Esto devolverá sólo los "tipofoto" que tiene ese concursante.
Entonces puedes crear un array (que yo llamo $tipos) y que contendrá los "tipofotos" de ese usuario, que te acaba de devolver la consulta anterior:
Código PHP:
$tipos = array(); //inicializamos el array, ya que el usuario tal vez no tenga ningún tipofoto
while( $registro mysql_fetch_assoc($cct) ){
   
$tipos[] = $registro['tipofoto'];
}
//Y aquí puedes utilizar el array $tipos
foreach($tipos as $tipo){
   switch(
$tipo){
      case 
'normal'//acciones para "normal"
         
break;
      case 
'tipico'//acciones para "tipico"
         
break;
      case 
'tbano'//acciones para "tbano"
   
}

El ejemplo te lo puse un poco "paso a paso"... pero si lo que quieres es algo como eso, puedes hacer las cosas directamente en el while (y sin utilizar ese array que llamamos $tipos):
Código PHP:
while( $registro mysql_fetch_assoc($cct) ){
   switch(
$registro['tipofoto']){
      case 
'normal'//acciones para "normal"
         
break;
      case 
'tipico'//acciones para "tipico"
         
break;
      case 
'tbano'//acciones para "tbano"
   
}

Saludos
  #12 (permalink)  
Antiguo 23/02/2005, 22:15
 
Fecha de Ingreso: septiembre-2003
Mensajes: 384
Antigüedad: 14 años, 3 meses
Puntos: 0
jejeje perfecto, por siacaso conoces algun tutorial completo de mysql porque no habia visto ese **DISTINCT y tambien de como buscar en 2 tablas al mismo tiempo
  #13 (permalink)  
Antiguo 24/02/2005, 07:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por eagoweb2
jejeje perfecto, por siacaso conoces algun tutorial completo de mysql porque no habia visto ese **DISTINCT y tambien de como buscar en 2 tablas al mismo tiempo
Pues ...

En castellano .. no sóo de SQL para Mysql sino también sobre Base de datos (enfocado a Mysql):
www.mysql-hispano.com

El oficial de Mysql
www.mysql.com

Un saludo,
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 07:33.