Foros del Web » Programando para Internet » PHP »

Encontrar coincidencias en una cadena

Estas en el tema de Encontrar coincidencias en una cadena en el foro de PHP en Foros del Web. ¿Cómo se podría hacer que, si un texto está en una cadena, que lo muestre solamente? Es decir: si tengo una variable con valor 'guserjj' ...
  #1 (permalink)  
Antiguo 01/11/2007, 14:34
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Encontrar coincidencias en una cadena

¿Cómo se podría hacer que, si un texto está en una cadena, que lo muestre solamente?
Es decir: si tengo una variable con valor 'guserjj' que busque si está user, y si es así, que lo imprima.
Si alguien no lo entiende, que lo diga.
Saludos.
  #2 (permalink)  
Antiguo 01/11/2007, 14:42
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Encontrar coincidencias en una cadena

No entiendo mucho... si el texto está en la cadena, lo tiene que mostrar?

Código PHP:
$texto 'Lorem ipsum at dolor...';
$cadena 'ipsum';
if (
strpos($texto$cadena)) echo $cadena
  #3 (permalink)  
Antiguo 01/11/2007, 15:06
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 16 años, 11 meses
Puntos: 6
Re: Encontrar coincidencias en una cadena

Hola puedes usar substr() para eso.

aquí te dejo una referencia, ojalá te ayude un poco.

http://www.hospedajeydominios.com/ma...f_strings.html

salu2.
__________________
"Eres grande por que caminas entre gigantes"
  #4 (permalink)  
Antiguo 01/11/2007, 18:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Encontrar coincidencias en una cadena

Código PHP:
$texto 'Lorem ipsum at dolor...';
$cadena 'ipsum';
if (
strpos($texto$cadena)) echo $cadena
strpos busca solo caracteres, no sub-substrigs y no devuelve VERDADERO sino FALSO o la POSICION

Podria hacerse con preg_match .....

Código PHP:
<?php
$cadena 
"Me encanta cantar la la lalaLa :-)";
$buscado="lalala"// busco "lalala" en $cadena
$buscado"/".$buscado."/i";


if (
preg_match($buscado$cadena)) {
    echo 
$cadena;
} else {
    echo 
"No se ha encontrado una coincidencia.";
}
?> ?>
Eso deberia funcionar

Última edición por Italico76; 01/11/2007 a las 19:00
  #5 (permalink)  
Antiguo 02/11/2007, 03:34
Avatar de Raulmmmm  
Fecha de Ingreso: marzo-2007
Ubicación: En otro lugar que tú
Mensajes: 1.549
Antigüedad: 17 años, 1 mes
Puntos: 36
Re: Encontrar coincidencias en una cadena

Gracias a todos. Usé el código de Italico76 para hacerlo. Gracias por devolverme el favor.
  #6 (permalink)  
Antiguo 02/11/2007, 05:11
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Encontrar coincidencias en una cadena

Cita:
Gracias a todos. Usé el código de Italico76 para hacerlo. Gracias por devolverme el favor.
Por mi parte DE NADA y la verdad es que tu codigo (y el de Seppo) fueron una inspiracion para mi // siento que me abrieron el camino y soy yo el agradecido

PD:preg_match() busca solo una coincidencia y para varias esta preg_match_all()
  #7 (permalink)  
Antiguo 02/11/2007, 06:45
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Encontrar coincidencias en una cadena

Cita:
Iniciado por Italico76 Ver Mensaje
strpos busca solo caracteres, no sub-substrigs y no devuelve VERDADERO sino FALSO o la POSICION
Italico76, strpos busca substrings, no necesariamente caracteres... y la verdad q fallé en el ejemplo, tnedría q haber puesto "if (strpos($texto, $cadena) !== false) echo $cadena;" por si aparece al principio de $texto.

En general, es preferible usar esta función a cualquier preg o ereg porque es bastante más liviano... Probá el siguiente código

Código PHP:
<?php
$texto 
'Lorem ipsum at dolor...';
$cadena 'ipsum';

$start microtime(true);
for (
$a 0; ++$a <= 10000;)
stripos($texto$cadena) !== false;
echo 
'Usando strpos: ' microtime(true) - $start;

echo 
"\n";

$start microtime(true);
for (
$a 0; ++$a <= 10000;)
{
$buscado "/".$cadena."/i";
preg_match($buscado$texto);
}
echo 
'Usando preg_match: 'microtime(true) - $start;
?>
A mí me da más del doble de tiempo usando preg.
Y el problema principal sería si la cadena q se está buscando tiene una /, un . o cualquier caracter especial
  #8 (permalink)  
Antiguo 02/11/2007, 07:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Encontrar coincidencias en una cadena

Cita:
A mí me da más del doble de tiempo usando preg.
Y el problema principal sería si la cadena q se está buscando tiene una /, un . o cualquier caracter especial
200% de acuerdo sucede que que lo unico que aprendi de PHP en una semanita fue expresiones regulares
  #9 (permalink)  
Antiguo 02/11/2007, 10:13
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Encontrar coincidencias en una cadena

En realidad la comparacion seria ESTA porque yo concatenaba antes y no en cada resolucion (o iteracion de tu bucle)

<?php
$texto = 'Lorem ipsum at dolor...';
$cadena = 'ipsum';

$start = microtime(true);
for ($a = 0; ++$a <= 10000;)
stripos($texto, $cadena) !== false;
echo 'Usando strpos: ' , microtime(true) - $start;

echo "\n";

$buscado= "/".$buscado."/i"; // concatenaba antes!

$start = microtime(true);
for ($a = 0; ++$a <= 10000;)
preg_match($buscado, $texto);
echo 'Usando preg_match: ', microtime(true) - $start;
?>

  #10 (permalink)  
Antiguo 02/11/2007, 10:29
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Encontrar coincidencias en una cadena

Es discutible... Lo pensé, pero estoy iterando todo le proceso que hace cada uno... en tu proceso vos concatenas y después hacés el preg match, en el mío no concateno :P
  #11 (permalink)  
Antiguo 02/11/2007, 12:21
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
De acuerdo Re: Encontrar coincidencias en una cadena

Cita:
Es discutible... Lo pensé, pero
Despues me di cuenta que tenias razon
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 10:47.