2017-01-30 3 views
0

Этот код работает в php 7 (localhost), но не php 5 (isp). Он преобразует текстовый файл с разделителями в файл json для использования с dataTables.скрипт работает в php 7, но не php 5

источник:

6590|07/19/2003|RCC Sat. Open|C11|Nikolayev, Igor (FM)|2402|Gonzalez, Jose|2131|1-0| 

Желаемый результат:

{"data":[ 
{"game":"6624","Date":"11/01/2003","Event":"RCC Sat. Open","ECO":"C65","White":"Liman, Christ","WhiteElo":"1729","Black":"Nikolayev, Igor (FM)","BlackElo":"2408","Result":"0-1"}, 
.... 
]} 

Каким образом?

<?php 

$text = file('games.txt'); $count = count($text); arsort($text); 

$X = 0; 

$fp = fopen("games.json", "w"); 

fwrite ($fp, "{"); fwrite ($fp, '"data":['); 

foreach($text as $line) {$token = explode("|", $line); 

$game = $token[0]; $date = $token[1]; $event = $token[2]; $eco = $token[3]; $white = $token[4]; 
$white_rating = $token[5]; $black = $token[6]; $black_rating = $token[7]; $result = $token[8]; 

    fwrite ($fp, "\n"); 
    fwrite ($fp,'{'); 

    fwrite ($fp, '"game":"'.$game.'",'); 
    fwrite ($fp, '"Date":"'.$date.'",'); 
    fwrite ($fp, '"Event":"'.$event.'",'); 
    fwrite ($fp, '"ECO":"'.$eco.'",'); 
    fwrite ($fp, '"White":"'.$white.'",'); 
    fwrite ($fp, '"WhiteElo":"'.$white_rating.'",'); 
    fwrite ($fp, '"Black":"'.$black.'",'); 
    fwrite ($fp, '"BlackElo":"'.$black_rating.'",'); 
    fwrite ($fp, '"Result":"'.$result.'"'); 

    $X++; 

    fwrite ($fp, '}'); 
    if ($X <= $count-1) {fwrite ($fp, ',');} 

    } 

    fwrite ($fp, "]"); 

    fwrite ($fp, "}"); 

    fclose($fp); 

    header('Location:pgn_assistant.php'); 
    ?> 
+0

Не рекомендуется создавать собственный метод преобразования JSON, когда 'json_encode' существует изначально. Также вы получаете какие-либо ошибки? – apokryfos

+0

У меня нет ошибок. Вскоре я исследую json_encode. – verlager

+0

На первый взгляд я не вижу ничего несовместимого с PHP 5.6. Правильны ли ваши права на файлы, которые вы пытаетесь читать и писать? Или они находятся в правильных местах? – thodic

ответ

2

с помощью PHP документации вы можете использовать json_encode

Это собственный способ кодирования массив или любой объект, реализующий \JsonSerializable в JSon строку.

file_put_contents('myfile.json', json_encode($data));