未知的数据格式以及如何在PHP中处理它数据格式接近JSON

问题描述

好久不见。我已经有一段时间没有写代码了,并且遇到了非常类似于JSON的数据格式,但是显然不是,并且在编码/解码或只是简单地处理它方面存在一些问题。我得到的数据如下:

"Data"
{
    "name1"        "Name-1"
    "name2"        "Name-2"
    "info"
    {
        "info1"     "Info-1"
        "info2"     "Info-2"
        "test"
        {
            "number"        "5"
            "player1"
            {
                "name"      "xyz"
                "stats1"        "1"
                "stats2"        "2"
                "stats3"        "3"
                "stats4"        "4"
            }
        }
    }
}

我已经尝试了许多可能的方法来在str_replace循环和顺序中使用正确的参数来对foreach进行“ jsonyfi”使用,但是我觉得有一种更好的方法可以用PHP编写大量代码,如果我收到的数据发生某些预期的更改,这些代码可能会失败。

我如何获取数据以及已经尝试将其转换为可读数据的方法是:

  ob_start();
  $result = ftp_get($ftp_conn,"PHP://output",$value,FTP_BINARY);
  $fileSize = ftp_size($ftp_conn,$value);
  $data = ob_get_contents();
  ob_end_clean();
  $fulldata = str_replace('"Data"','',$data);
  preg_match_all('/"(?:\\\\.|[^\\\\"])*"|\S+/',preg_replace('/{}/',$fulldata),$matches);


$keys = array(
          '"name1"','"name2"','"info"','"info1"','"info2"','"test"','"number"','"player1"','"name"','"stats1"','"stats2"','"stats3"','"stats4"');

      $counter = 0;
      $result = '';

foreach ($matches[0] as $k => $v) {
        if(in_array($v,$keys)){
          $result .= implode(array($v,' : '));
        }
        else if($v == '{'){
          $result .= $v;
        }
        else if($v == "}"){
          $result .= implode(array($v,','));
        }
        else{
          $result .= implode(array($v,'));
        }
       $counter++; 
     }

    $firstEdit = str_replace(',}',' }",$result);
    $secondEdit = str_replace('",$firstEdit);
    $final = $secondEdit;
    $final .= "}";
    $totalFinal = str_replace('},'} }',$final);

    echo $totalFinal;

这只是数据和我的意大利面条代码的简短示例。正如我所提到的,我确信有一些干净而不错的方法来处理它,而不会因数据本身发生某些关键或任何意外更改而使它无法工作。请帮忙。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)