PHP разбирает текст на структурированный Json - PullRequest
0 голосов
/ 16 октября 2019

У меня есть такой текст:

some text Xª 1234567-89.0123.45.6789 (YZ) 01/01/2011 Esbjörn Svensson 02/02/2022 Awesome Trio Wª 0987654-32.1098.76.5432 (KBoo) 07/09/2013 Some Full Name 09/07/2017 Observation 12/12/2018 some text that I don't want to keep Xª 4335678-98.7123.95.5689 09/10/2010 Name Here 08/09/2020 Observation and more text to delete

Мне нужен структурированный Json, подобный этому:

     {
        "data":
            {
                "Team": "Xª",
                "ID": "1234567-89.0123.45.6789",
                "Type": "(YZ)",
                "Date 1": "01/01/2011",
                "Name": "Esbjörn Svensson",
                "Date 2: "02/02/2022",
                "Obs": "Awesome Trio",
                "Date 3": ""
            },
            {
                "Team": "Wª",
                "ID": "0987654-32.1098.76.5432",
                "Type": "(KBoo)",
                "Date 1": "07/09/2013",
                "Name": "Some Full Name",
                "Date 2: "09/07/2017",
                "Obs": "Observation",
                "Date 3": "12/12/2018"
            },
            {
                "Team": "Xª",
                "ID": "4335678-98.7123.95.5689",
                "Type": "",
                "Date 1": "09/10/2010",
                "Name": "Name Here",Name Here
                "Date 2: "08/09/2020",
                "Obs": "Observation",
                "Date 3": ""
            }
     }

Я искал много кода здесь, но не могу получитьэто работать так, как мне нужно. Я пытался разделить текст, где есть пробел и символ «ª», но это не сработало.

<code>foreach($textsource as &$lista) {
        $y = implode(' ',$lista);
        $x = preg_split(' ', $y);
        $delimiter = '/\ª/';
        $childIndex = array_keys(preg_grep($delimiter, $x));
        $chunks = [];
        $final = [];
        for ($i=0; $i<count($childIndex); $i++) {
            $chunks[$i]['begin'] = $childIndex[$i];
            if (isset($childIndex[$i+1])) {
            $chunks[$i]['len'] = $childIndex[$i+1]-$childIndex[$i];
            }
    }
    foreach ($chunks as $chunk) {
        if (isset($chunk['len'])){
            $final[] = array_slice($x, $chunk['begin'], $chunk['len']);
        } else {
            $final[] = array_slice($x, $chunk['begin']);
        }
    }
    echo "<pre>";
    print_r($final);
    echo "
";

Я ценю любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...