Foros del Web » Programando para Internet » PHP »

RegEx para extraer datos

Estas en el tema de RegEx para extraer datos en el foro de PHP en Foros del Web. Brevemente, he intentado por 5 dias extraer los datos de esta cadena. "INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004');" Nesecito extraer "AF" y "Afghanistan" de la cadena ...
  #1 (permalink)  
Antiguo 29/10/2011, 10:22
Avatar de ColdFusion  
Fecha de Ingreso: octubre-2008
Ubicación: Tocoa, Colon Honduras C.A.
Mensajes: 419
Antigüedad: 15 años, 6 meses
Puntos: 9
RegEx para extraer datos

Brevemente, he intentado por 5 dias extraer los datos de esta cadena.
"INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004');"

Nesecito extraer "AF" y "Afghanistan" de la cadena anterior.

Alguien me hecha la mano?
  #2 (permalink)  
Antiguo 29/10/2011, 10:38
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: RegEx para extraer datos

Hola que tal.

la cadena cambia o es estable, para de esa manera poder ayudarte mejor.

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #3 (permalink)  
Antiguo 29/10/2011, 10:46
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: RegEx para extraer datos

Supongo que algo así:

Código PHP:
Ver original
  1. <?php
  2. $str = "INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004');";
  3. $str = str_replace(array("INSERT INTO country VALUES ('", "');"), array('', ''), $str);
  4. $str = explode("','", $str);
  5. echo $str[0] . '<br />';
  6. echo $str[2];

o algo así:

Código PHP:
Ver original
  1. <?php
  2. $str = "INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004');";
  3. preg_match_all("@'(.*?)'@i", $str, $m);
  4. echo $m[1][0] . '<br />';
  5. echo $m[1][2];
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 29/10/2011, 10:54
Avatar de lohenzoo  
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad Juarez, Chihuahua
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: RegEx para extraer datos

Facilísimo!

Código PHP:

$query
="INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004')";
preg_match_all("(AFGHANISTAN|AF)"$query$outPREG_SET_ORDER);

echo 
$out[0][0]." - "
echo 
$out[1][0]; 
El resultado de esto sería:

AF - AFGHANISTAN
  #5 (permalink)  
Antiguo 29/10/2011, 10:59
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: RegEx para extraer datos

Cita:
Iniciado por lohenzoo Ver Mensaje
Facilísimo!

Código PHP:

$query
="INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004')";
preg_match_all("(AFGHANISTAN|AF)"$query$outPREG_SET_ORDER);

echo 
$out[0][0]." - "
echo 
$out[1][0]; 
El resultado de esto sería:

AF - AFGHANISTAN

Si pero resulta que los países cambian, dudo que sea sólo para Afghanistan.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 30/10/2011, 14:53
Avatar de ColdFusion  
Fecha de Ingreso: octubre-2008
Ubicación: Tocoa, Colon Honduras C.A.
Mensajes: 419
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: RegEx para extraer datos

Asi es, los paises cambian.. Que problema :/
  #7 (permalink)  
Antiguo 30/10/2011, 15:03
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: RegEx para extraer datos

Cita:
Iniciado por ColdFusion Ver Mensaje
Asi es, los paises cambian.. Que problema :/
Probaste los 2 códigos que te dejé?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 30/10/2011, 15:10
Avatar de ColdFusion  
Fecha de Ingreso: octubre-2008
Ubicación: Tocoa, Colon Honduras C.A.
Mensajes: 419
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: RegEx para extraer datos

El segundo me funcionó, pero, Imagina que son varias lineas de estas
"INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004');
INSERT INTO country VALUES ('MX','MEXICO','Mexico',MXC','008');
INSERT INTO country VALUES ('HN','HONDURAS','Honduras','HND','075')";

Creo que lo mejor que puedo hacer es copiarlos uno por uno :( ya que es la lista completa de todos los paises o simplemente ingresarlos en una tabla de la db e imprimirlos con un bucle..

Gracias a todo!
  #9 (permalink)  
Antiguo 01/11/2011, 10:44
Avatar de lohenzoo  
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad Juarez, Chihuahua
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: RegEx para extraer datos

Asi esta mejor no?

Código PHP:

$query
="INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004')";
preg_match_all("/'[a-zA-Z]*'/"$query$outPREG_SET_ORDER);

echo 
str_replace("'","",$out[0][0]." - "); 
echo 
str_replace("'","",$out[2][0]); 

Última edición por lohenzoo; 01/11/2011 a las 10:45 Razón: aaaah ya te entendi, sorry, si con un bucle es la opcion.
  #10 (permalink)  
Antiguo 01/11/2011, 11:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: RegEx para extraer datos

Cita:
Iniciado por lohenzoo Ver Mensaje
Asi esta mejor no?

Código PHP:

$query
="INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004')";
preg_match_all("/'[a-zA-Z]*'/"$query$outPREG_SET_ORDER);

echo 
str_replace("'","",$out[0][0]." - "); 
echo 
str_replace("'","",$out[2][0]); 
Tampoco sirve en el caso de Estados Unidos no funcionaría
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 01/11/2011, 14:38
Avatar de lohenzoo  
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad Juarez, Chihuahua
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: RegEx para extraer datos

Si pudieras ingresar el texto separando por "|" (pipes) cada linea pudieras hacer esto.

Código PHP:

$query
="    INSERT INTO country VALUES ('AF','AFGHANISTAN','Afghanistan','AFG','004')|
            INSERT INTO country VALUES ('MX    ','MEXICO','Mexico','MEX','005')|
            INSERT INTO country VALUES ('ES','ESPANA','Espana','ESP','006')|
            INSERT INTO country VALUES ('UK','UNITED KINGDOM','United Kingdom','UKD','007')|
            INSERT INTO country VALUES ('EU','ESTADOS UNIDOS','Estados Unidos','EUA','008')"
;

$queries explode('|',$query);

for (
$i=0;$i<=count($queries)-1;$i++) {
    
preg_match_all("/'[a-z A-Z]*'/"$queries[$i], $outPREG_SET_ORDER);
    echo 
str_replace("'","",$out[0][0]." - "); 
    echo 
str_replace("'","",$out[2][0]." | "); 

  #12 (permalink)  
Antiguo 01/11/2011, 14:50
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: RegEx para extraer datos

Con la función file es más que suficiente. No hace falta explode ni str_replace y estás usando incorrectamente el bucle for. Es mejor un foreach. Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #13 (permalink)  
Antiguo 01/11/2011, 15:03
Avatar de lohenzoo  
Fecha de Ingreso: septiembre-2011
Ubicación: Ciudad Juarez, Chihuahua
Mensajes: 26
Antigüedad: 12 años, 7 meses
Puntos: 5
Respuesta: RegEx para extraer datos

pues pon un ejemplo para aprender, ese es el objetivo del foro, no nada mas estar diciendo qué funciona y qué no funciona.
  #14 (permalink)  
Antiguo 01/11/2011, 15:08
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: RegEx para extraer datos

Sólo te estoy diciendo que puedes hacer y que no debes hacer. El objetivo del foro no es sólo dejar códigos, te estoy guiando para que tu mismo aprendas cosas nuevas.

Si quieres códigos visita las funciones en el manual PHP.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: regex
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

SíEste tema le ha gustado a 1 personas




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