Foros del Web » Programando para Internet » PHP »

¿Que funcion uso para buscar una cadena dentro de otra cadena?

Estas en el tema de ¿Que funcion uso para buscar una cadena dentro de otra cadena? en el foro de PHP en Foros del Web. Bueno, estube mirando la documentacion de PHP, y veo que hay muchas funciones de comparacion.. estube probando todas, y no encontre la que necesito... me ...
  #1 (permalink)  
Antiguo 29/03/2005, 22:01
 
Fecha de Ingreso: enero-2003
Mensajes: 103
Antigüedad: 14 años, 11 meses
Puntos: 0
¿Que funcion uso para buscar una cadena dentro de otra cadena?

Bueno, estube mirando la documentacion de PHP, y veo que hay muchas funciones de comparacion..

estube probando todas, y no encontre la que necesito... me parece raro que no exista esta

funcion, ya que no es algo muy raro lo que quiero hacer...

Quiero que busque una cadena dentro de otra, sin tener en cuenta las mayusculas y minusculas..

Ejemplo

ENTRE "cualquiera" y "frace cualquiera, blabla" DEVUELVA True
ENTRE "abCd sasa" y "abcd sasa blablabla" DEVUELVA True

Se entiende??
Buenop, espero que alguien me pueda ayudar...
Mil gracias!
Blachuu
  #2 (permalink)  
Antiguo 29/03/2005, 22:23
 
Fecha de Ingreso: febrero-2005
Mensajes: 13
Antigüedad: 12 años, 10 meses
Puntos: 1
strrpos(), ereg() y eregi() te pueden servir, buscalas en el manual.
  #3 (permalink)  
Antiguo 30/03/2005, 08:25
 
Fecha de Ingreso: enero-2003
Mensajes: 103
Antigüedad: 14 años, 11 meses
Puntos: 0
Gracias!!!, la funcion que mas se adapta es eregi()

A ver si me pueden dar un "Ayudon" mas...yo necesito que la funcion, me busque determinadas palabras dentro del texto...
Ejemplo:

Buscar :) DENTRO de:

hola que tal :) esta es una prueba!

Me devuelve True, ya que yo busco asi eregi(":)", $cadena);
Pero si uso esa misma linea, con algo asi:

hola que tal :)
esta es una prueba!


Hola que tal:) esta es una prueba

hola que tal
:)
esta es una prueba


Todos estos casos me da False... y por las dudas, no puedo encerrar a :) entre corchetes o algun caracter que haga mas facil su ubicacion...

Creo que la forma correcta de solucionar esto, es ir caso por caso.. aunque algo engorroso..
Alguna idea??
Muchas Gracias!!!!
Blachu
  #4 (permalink)  
Antiguo 30/03/2005, 11:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 13
Antigüedad: 12 años, 10 meses
Puntos: 1
eregi debería devolver true en todos los casos, por las dudas acabo de probar y siempre me devuelve true, habría que ver el código que usas y que es lo que necesitas hacer realmente, por ejemplo si vas a hacer algo más con esas palabras que encuentres, guardarlas o reemplazarlas por otras tal vez. Para lo que comentas hasta ahora eregi debería ser suficiente.
  #5 (permalink)  
Antiguo 30/03/2005, 12:19
 
Fecha de Ingreso: enero-2003
Mensajes: 103
Antigüedad: 14 años, 11 meses
Puntos: 0
Hola JuanJodm!! Muchas gracias por tomarte la molestia...

Si, me confundi con lo ejemplos...

es asi, yo tengo que buscar " :) " en una determinada cadena

en el caso: Hola que tal:) esta es una prueba

me tiene que devolver false..

en el caso:
hola que tal :)
esta es una prueba!

necesito que me devuelva true... pero me devuelve false.. asi que este caso, lo que tendria que hacer es comprobar es algo asi: eregi(" :)[CARACTER]", $cadena);
en donde [CARACTER] es igual al caracter de fin de linea.... no?... el tema es que no se cual es ese caracter... pero ahora voy a ver si lo encuentro...

Muuuuchas gracias!
Saludos, Blachuu
  #6 (permalink)  
Antiguo 30/03/2005, 13:44
 
Fecha de Ingreso: enero-2003
Mensajes: 103
Antigüedad: 14 años, 11 meses
Puntos: 0
Ahora lo estoy haciendo asi:..

if(eregi (" :)
",$var)) {
echo "<br>Esta!";
}else{
echo "<br>No esta!";
}
  #7 (permalink)  
Antiguo 30/03/2005, 16:17
 
Fecha de Ingreso: febrero-2005
Mensajes: 13
Antigüedad: 12 años, 10 meses
Puntos: 1
Habría que usar expresiones regulares, de lo cual no tengo mucha idea, pero dando una leida rápida a http://www.ignside.net/man/php/regex.php pude sacar esto que parece funcionar:

Código PHP:
$cadena="Hola que tal :) esta es una prueba!";
$palabra=preg_quote(':)'); //Palabra a buscar
if(eregi("[ \t\n\r]+".$palabra."[ \t\n\r]+",$cadena))
{
    echo 
'Si está.';
}
else
{
    echo 
'No está.';

Lo que indica esta parte: [ \t\n\r]+ antes y despues de la palabra a buscar, es que puede haber uno o más espacios, tabulador, nueva linea o retorno, esto funcionara a menos que la palabra que buscamos no este ni al principio ni al final de la cadena, porque entonces no la encontrara ya que no habra ningun caracter antes ni después de la palabra. Otro detalle, las palabras que busques tienes que pasarlas antes por la función preg_quote() para que escape los caracteres especiales que se usan en las expresiones regulares.

Como te digo, es solo lo que saque después de una leida rápida al manual de esa página, seguramente no es la mejor forma de hacerlo, haber si alguién que maneje mejor el tema nos da algún consejo.

Saludos.
  #8 (permalink)  
Antiguo 31/03/2005, 14:28
 
Fecha de Ingreso: enero-2003
Mensajes: 103
Antigüedad: 14 años, 11 meses
Puntos: 0
Esto asi, me sirvio muchisimo....

Muuuuuuuuuuuuuuuuchas muchas gracias JuanJodm!!!
Saludos!
Blachuu
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 18:18.