问题描述
好久不见。我已经有一段时间没有写代码了,并且遇到了非常类似于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 (将#修改为@)