Foros del Web » Programando para Internet » PHP »

Parsear fichero

Estas en el tema de Parsear fichero en el foro de PHP en Foros del Web. Hola a todos, tengo un fichero tipo: Código PHP: <?php $lang [ '01' ] =  'Lehenengo esaldia' ; $lang [ '02' ] =  'Bigarren esaldia' ; ?> la cosa ...
  #1 (permalink)  
Antiguo 28/02/2008, 05:29
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Parsear fichero

Hola a todos, tengo un fichero tipo:
Código PHP:
<?php
$lang
['01'] = 'Lehenengo esaldia';
$lang['02'] = 'Bigarren esaldia';
?>
la cosa es que quiero pillar los valores:

Código:
01 y Lehenengo esaldia
cada uno en variables diferentes.

El problema es que dentro de la segunda variable puede haber comillas escapadas, ejemplo:
Código PHP:
<?php
$lang
['01'] = 'Lehenengo esaldia hau da: \'Egunon\'';
...
?>
entonces un explode ya no me valdria y me cascaria el programa, aqui el programa:
Código PHP:
<?php
$archivo
=fopen('lang/es.php','r');
$deny=array('<?php','?>');
while (!
feof($archivo))
 {               
     
$info=fgets($archivo); 
     if(
in_array(trim($info),$deny)==false)
      {
        
$tmp=explode("'",$info);
        echo 
$tmp[1];
        echo 
$tmp[3];
      }
     
$info=NULL;
 } 
// while
?>
hay alguna manera de hacerlo por ejemplo con expresiones regulares?
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #2 (permalink)  
Antiguo 28/02/2008, 06:32
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
De acuerdo Re: Parsear fichero

Bueno he hecho una chapucilla y funciona:

Código PHP:
<?php
$archivo
=fopen('lang/es.php','r');
$deny=array('<?php','?>');
while (!
feof($archivo))
 {               
     
$info=fgets($archivo); 
     if(
in_array(trim($info),$deny)==false)
      {
          
$count=0;    
          
$name=NULL;
          
$value=NULL;     
          
$savename=false;
          
$savevalue=false;
          
$exist=false
                            
        for(
$i=0;$i<strlen($info);$i++)
         {
             if(
$info[$i]=="'" && $info[$i-1]!="\\")
             {
                 
$count++;
                 switch(
$count)
                  {
                    case 
1:
                        
$savename=true;
                        
$savevalue=false;
                        break;
                    case 
2:
                        
$savename=false;
                        
$savevalue=false;
                        break;
                    case 
3:
                        
$savename=false;
                        
$savevalue=true;
                        break;
                    case 
4:
                        
$savename=false;
                        
$savevalue=false;
                         
$exist=true;                        
                        break;                        
                  } 
// switch

             
}
             else
             {
                 if(
$savename==true)
                  {
                      
$name.=$info[$i];
                  }
                 elseif(
$savevalue==true)
                  {
                      
$value.=$info[$i];
                  }
             }
         } 
// for($i=0;$i<strlen($info);$i++)
         
if($exist==true)
          {
            echo 
$name;
            echo 
$value;
            echo 
"<br />";            
          }             
      }    
// if(in_array(trim($info),$deny)==false)
 
// (!feof($archivo))
?>
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
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 01:10.