Foros del Web » Programando para Internet » PHP »

Comparación de Cadenas

Estas en el tema de Comparación de Cadenas en el foro de PHP en Foros del Web. Estimados, no se si esta bien el titulo del tema pero paso a explicar el problema que se me presento. Supongamos que tengo un grupo ...
  #1 (permalink)  
Antiguo 24/10/2012, 07:43
Avatar de jeiriart  
Fecha de Ingreso: abril-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Comparación de Cadenas

Estimados, no se si esta bien el titulo del tema pero paso a explicar el problema que se me presento.

Supongamos que tengo un grupo de archivos que todos comienzan con un código "x", pongo un ejemplo:

B1_123_444
A1_122_4344
A1_343_4567
C1_343_6644

de estos archivos necesito mostrar solamente los que comiencen con el código A1 (es un ejemplo), con preg_match_all puedo hacerlo, pero solo me muestra la coincidencia (o sea el código A1 y sin el resto del nombre del archivo), lo que necesito es mostrar todo el nombre del archivo que empiece con ese código digamos e ignorar el resto de los archivos con códigos diferentes.

Estoy un poco perdido y san google no me fue de mucha ayuda (quizás debido a que no se bien que buscar en realidad). Alguien tiene una idea mas o menos del tema?

Les agradecería muchísimo cualquier consejito o sugerencia.

Desde ya, gracias.
  #2 (permalink)  
Antiguo 24/10/2012, 08:19
Avatar de jeiriart  
Fecha de Ingreso: abril-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Respuesta: Comparación de Cadenas

Me respondo a mi mismo
Código PHP:
Ver original
  1. $x = "B1_134_4FFF V4_122_4XXX B1_123_444 A1_122_4344 C1_3245_6644 A1_343_4567";
  2.  
  3. preg_match('/A1_(.*)_(.*)/',$x,$xa1);
  4. $a1 = $xa1[0];
  5. echo $a1;

Como veran, $x es una cadena con diferentes codigos dentro, donde 3 de ellos comienzan con A1_ ahora el problema que me presenta es diferente ya que ese codigo (al ejecutarlo) devuelve si todos los codigos que comienzan con A1_ pero no me ignora los que estan a continuación:

lo que devuelve el codigo anterior es:

"A1_122_4344 C1_3245_6644 A1_343_4567"

como veran, toma el primer codigo que comienza con "A1_" y a partir de busca todos los demas, pero si se fijan, me imprime tambien (no lo ignora) al que codigo C1_ que esta entre los dos A1_

esto ya esta un poco entreverado verdad? Creo que algun "comodin" de los de preg_match_all me puede servir para esto, pero no estoy seguro cual... alguna idea?
  #3 (permalink)  
Antiguo 24/10/2012, 08:55
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 18 años, 10 meses
Puntos: 79
Respuesta: Comparación de Cadenas

no sé de donde extraes los nombres, pero si puedes trabajarlos como arreglo (array) y los consultas, te dejo un ejemplo...

Código PHP:
<?
$a 
= array( "B1_134_4FFF""V4_122_4XXX""B1_123_444""A1_122_4344""C1_3245_6644""A1_343_4567" );
function 
buscar_por($q){
    global 
$a;
    echo 
"<b>Archivos buscador por".$q."</b>:<br>"$enc 0;
    foreach(
$a as $arch)
    if(
preg_match("#^".$q."#",$arch)) {echo $arch."<br>";$enc++;}
    echo 
"Encontrados: ".$enc."<p>";
}
buscar_por("A1");
buscar_por("B1");
buscar_por("C");
?>
salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #4 (permalink)  
Antiguo 24/10/2012, 09:30
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Comparación de Cadenas

Hola buenas:

Si tienes, tal y como mostrabas, lo siguiente:

Código PHP:
Ver original
  1. $x = "B1_134_4FFF V4_122_4XXX B1_123_444 A1_122_4344 C1_3245_6644 A1_343_4567";

Quizá puedas probar esto para sacar los elementos que comiencen con el patrón que comentas (A1):

Código PHP:
Ver original
  1. $x = "B1_134_4FFF V4_122_4XXX B1_123_444 A1_122_4344 C1_3245_6644 A1_343_4567";
  2.  
  3. $array_x = explode(" ", $x);
  4.  
  5. for ($i=0; $i<count($array_x); $i++){
  6.  
  7.     if (substr($array_x[$i], 0, 2)=='A1'){
  8.         $resultado .= $array_x[$i]." ";
  9.     }
  10.  
  11. }
  12.  
  13. echo $resultado;

Saludos, espero que te sirva.
  #5 (permalink)  
Antiguo 24/10/2012, 10:02
Avatar de jeiriart  
Fecha de Ingreso: abril-2011
Mensajes: 9
Antigüedad: 13 años
Puntos: 0
Respuesta: Comparación de Cadenas

Excelente las dos formas, como array se me complica porque hay mas "porquerias" en el medio de la cadena, pero esta segunda forma es perfecta.

Código PHP:
Ver original
  1. $x = "B1_134_4FFF V4_122_4XXX B1_123_444 A1_122_4344 C1_3245_6644 A1_343_4567";
  2. *
  3. $array_x = explode(" ", $x);
  4. *
  5. for ($i=0; $i<count($array_x); $i++){
  6. *
  7. * * if (substr($array_x[$i], 0, 2)=='A1'){
  8. * * * * $resultado .= $array_x[$i]." ";
  9. * * }
  10. *
  11. }
  12. *
  13. echo $resultado;

Muchas gracias en serio! Muchas muchas... ^^

Etiquetas: 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 00:39.