How to read and block this TXT with PHP?

0

How can I read a TXT file in this format to insert into an episode table? The structure is this:

temporada{
    numero_episodio - nome_do_episodio
}

A practical example:

1{
    1 - Episódio número 1 na 1ª Temporada
    2 - Episódio número 2 na 1ª Temporada
    ...
}
2{
    1 - Episódio número 1 na 2ª Temporada
    2 - Episódio número 2 na 2ª Temporada
    ...
}

How to traverse, read, and separate these lines so that an array remains in the following format: episodios[temporada][episodio][nome_do_episodio] , is it possible? Is there any easier way to organize this TXT?

    
asked by anonymous 21.03.2017 / 18:53

1 answer

2

If there are only two people who will edit the DOC, there is nothing better than using a more "accurate" format like JSON or XML, rather than inventing their own format, anyway a simple + or - way is with expressions regular and replace, it took a while but I was able to create an example:

<?php

function converteParaJson($str) {
    //Primeiro iremos converter fazer um parser para JSON +ou- assim:

    //Cria as temporadas
    $str = preg_replace('#^(|\s)+(\d+)(\s|)\{#', '"$2": {', $str);
    $str = preg_replace('#\}(\s|)+(\d+)\{#', '}, "$2": {', $str);

    //Cria os episódios
    $str = preg_replace('#(\d+)(\s+|)\-(\s+|)([^\r\n]+)#', '"$1": "$4",', $str);

    //Remove virgulas extras
    $str = preg_replace('#,[\s]+\}#', '}', $str);

    $str = '{' . $str . '}';

    return $str;
}

$txt = '1{
    1 - Episódio número 1 na 1ª Temporada
    2 - Episódio número 2 na 1ª Temporada
}
2{
    1 - Episódio número 1 na 2ª Temporada
    2 - Episódio número 2 na 2ª Temporada
}';

$txt = converteParaJson($txt);

//Converte o json para array do php
$data = json_decode($txt, true);

print_r($data);

See working at ideone: link

    
21.03.2017 / 20:21