2016-07-19 11 views
2

Ich habe eine issuse nach dem Lesen von JSON-Datei mit file_get_contents.PHP: file_get_contents mit json_decode funktioniert nicht

Wenn ich diesen Code ausführen, seine Arbeits ok:

<?php 
$json='[ 
    { 
    "fullName":"Shachar Ganot", 
    "address":"Yad Rambam", 
    "phoneNumber":"050-1231233", 
    "email":"", 
    "note":"", 
    "role":"", 
    "area":"" 
    }, 
    { 
    "fullName":"Betty Ganot", 
    "address":"Modiin", 
    "phoneNumber":"054-3213211", 
    "email":"", 
    "note":"", 
    "role":"", 
    "area":"" 
    }, 
    { 
    "fullName":"Someone Else", 
    "address":"Somewhere", 
    "phoneNumber":"123456789", 
    "email":"", 
    "note":"", 
    "role":"", 
    "area":"" 
    } 
]'; 

//$json = file_get_contents('Test.txt'); 
$data = json_decode($json,true); 
echo $data[0]['fullName']; 

?> 

Ergebnis: Shachar Ganot

Wenn ich diesen Code ausführen, seine leer:

<?php 
$json = file_get_contents('Test.txt'); 
$data = json_decode($json,true); 
echo $data[0]['fullName']; 

?> 

Ergebnis: **** Empty - Nothig erscheint ****

, wenn ich diesen Code ausführen, um zu überprüfen, ob file_get_contents arbeitet:

<?php 
$json = file_get_contents('Test.txt'); 
$data = json_decode($json,true); 
echo $json; 

?> 

Ergebnis:

[{ "fullname": "Shachar Ganot", "Adresse": "Yad Rambam", "phoneNumber": "050-1231233", "email": "", "Notiz": "", "role": "", "area": ​​""}, {"fullName": "Betty Ganot", " Adresse ":" Modiin "," phoneNumber ":" 054-3213211 "," email ":" "," Notiz ":" "," role ":" "," area ":" "}, {" fullName " : "Someone Else", "Adresse": "Somewhere", "phoneNumber": "123456789", "email": "", "note": "", "role": "", "area": ​​""} ]


Was ich vermisse ??

Unnötig zu sagen, dass ich JSON tat Gültig mit https://jsonformatter.curiousconcept.com/

Antwort

5

Wenn Ihr Test.txt ein in UTF-8 (with BOM) codiert wird, wird die json_decode Funktion fehlschlagen und NULL zurückzukehren.

Sie können dieses Problem beheben, indem Sie den Inhalt Ihrer Datei Fixierung oder schneiden Sie die Stückliste aus Ihrer $json string:

$json = trim(file_get_contents('Test.txt'), "\xEF\xBB\xBF"); 
$data = json_decode($json,true); 
echo $data[0]['fullName']; 

Es wird viel besser sein, um sicherzustellen, dass der Inhalt der Datei korrekt ist und Verwenden Sie NICHT die Trim-Funktion, es sei denn, Sie müssen dies wirklich tun.

Sie können beispielsweise notepad++ verwenden, um den Inhalt von UTF-8 mit Stückliste in UTF-8 ohne Stückliste zu ändern.

+0

das funktioniert gut. Vielen Dank (: – Shachar87

Verwandte Themen