Mount array with txt data

5

I am trying to find a way to set up a table with the data of a txt, but I do not know how to separate the values in the array, since they are separated by several spaces, but are identified by fields (Name: : ...);

Example of a txt file:

 Código: 808                         Nome Abreviado: 091/0007756       Cliente Cobrança: 808
Nome: Nome da empresa                          Representante: 8
              Endereço: AV.2422                                                Bairro: Jardim
                Cidade: Jacare                         UF: SP                    Caixa Postal:
                  País: BRASIL                                 CEP: 12222222                  Zip Code:
           Telefone[1]: 00-0000-0000                        Telex:                            CGC/CPF: 123.321.123.4
        Ramo Atividade:                                      Grupo: 99                Data Implantação: 03/09/2007
             Categoria:                        Inscrição Municipal:
    Inscrição Estadual: 111.222.333.-74
                E-mail:  [email protected]
    
asked by anonymous 21.08.2014 / 20:16

1 answer

1

Based on your text file, I was able to split it into an array as you need it:

$txt = ' Código: 808                         Nome Abreviado: 091/0007756       Cliente Cobrança: 808
Nome: Nome da empresa                          Representante: 8
              Endereço: AV.2422                                                Bairro: Jardim
                Cidade: Jacare                         UF: SP                    Caixa Postal:
                  País: BRASIL                                 CEP: 12222222                  Zip Code:
           Telefone[1]: 00-0000-0000                        Telex:                            CGC/CPF: 123.321.123.4
        Ramo Atividade:                                      Grupo: 99                Data Implantação: 03/09/2007
             Categoria:                        Inscrição Municipal:
    Inscrição Estadual: 111.222.333.-74
                E-mail:  [email protected]';

// identificar campos em branco, campos com 2 espaços após o : e separar os campos com uma barra em pé |
$txt = preg_replace(array('/:[\s]{3,}/','/:[\s]{1,2}/','/[\s]{2,}|[\r\n]/'), array(':NULL|',':','|'), $txt);

// fatiar no : e na |
$campos = preg_split("/[:\|]/", $txt);

// rodar todo o array fatiado de 2 em 2, populando o array final
for($i = 0; $i < sizeof($campos);$i += 2)
    $data[trim($campos[$i])] = ($campos[$i+1] == 'NULL' ? NULL : trim($campos[$i+1]) );

print_r($data);

/* retorno:

Array
(
    [Código] => 808
    [Nome Abreviado] => 091/0007756
    [Cliente Cobrança] => 808
    [Nome] => Nome da empresa
    [Representante] => 8
    [Endereço] => AV.2422
    [Bairro] => Jardim
    [Cidade] => Jacare
    [UF] => SP
    [Caixa Postal] => 
    [País] => BRASIL
    [CEP] => 12222222
    [Zip Code] => 
    [Telefone[1]] => 00-0000-0000
    [Telex] => 
    [CGC/CPF] => 123.321.123.4
    [Ramo Atividade] => 
    [Grupo] => 99
    [Data Implantação] => 03/09/2007
    [Categoria] => 
    [Inscrição Municipal] => 
    [Inscrição Estadual] => 111.222.333.-74
    [E-mail] => [email protected]
)
*/
    
23.08.2014 / 02:56