2016-07-19 6 views
2

У меня есть isuse после чтения json-файла с файлом_get_contents.PHP: file_get_contents с json_decode не работает вместе

Когда я запускаю этот код, его рабочий нормально:

<?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']; 

?> 

Результат: Шахар Ganot

Когда я запускаю этот код, его пустой:

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

?> 

Результат: **** Пустой - появляется Nothig ****

, когда я запускаю этот код, чтобы проверить, если file_get_contents работает:

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

?> 

Результат:

[{ "FULLNAME": "Шахар Ganot", "адрес": "Яд Рамбам", "phoneNumber": "050-1231233", "email": "", "note": "", "role": "", "area": ​​""}, {"fullName": "Betty Ganot", " адрес ":" Modiin "," phoneNumber ":" 054-3213211 "," email ":" "," note ":" "," role ":" "," area ":" "}, {" fullName " : «Someone Else», «address»: «Somewhere», «phoneNumber»: «123456789», «email»: «», «note»: «", "role": "", "area": ​​""} ]


Что мне не хватает ???

Излишне говорить, что я сделал с JSON Valid https://jsonformatter.curiousconcept.com/

ответ

5

Если ваш Test.txt является закодированы в UTF-8 (with BOM), функция json_decode потерпит неудачу и вернуть NULL.

Вы можете это исправить, зафиксировав содержимое файла, или обрезать BOM из вашей $json строки:

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

Это будет гораздо лучше, чтобы убедиться, что содержимое файла является правильным и НЕ используйте функцию обрезки, если вам действительно не нужно.

Вы можете использовать notepad++, например, чтобы изменить содержимое с UTF-8 с помощью спецификации на UTF-8 без спецификации.

+0

эта работа хорошо. Благодаря (: – Shachar87

Смежные вопросы