[英]PHP - json_decode giving NULL
我正在嘗試使用如何在 PHP 中搜索 JSON 數組中給出的建議,以根據 .json 文件中的國家代碼查找國家名稱。
我有一個文件countrycodes.js
,其格式如下:
countries = [
{code: "GB", name: "United Kingdom"},
{code: "AF", name: "Afghanistan"},
// ...
{code: "ZM", name: "Zambia"},
{code: "ZW", name: "Zimbabwe"}
];
變量, countries
必須存在,因為部分應用程序依賴於此。
在 PHP 中,我做了以下事情:
$str = file_get_contents('countrycodes.js');
var_dump($str);
這會輸出一個字符串:
string(9642) "countries = [
{code: "GB", name: "United Kingdom"},
{code: "AF", name: "Afghanistan"},
// ...
但是,當我嘗試json_decode
它時,以下給出NULL
:
$str = file_get_contents('countrycodes.js');
$json = json_decode($str);
var_dump($json);
我不知道為什么這是因為json_decode
接受一個字符串,這就是我在上面發布的鏈接上給出的內容? 我嘗試刪除 JavaScript 變量( countries =
),但這沒有任何區別。
最終,我想要做的是能夠給 PHP 一個國家code
,例如“GB”,並讓它返回適當的name
,例如“英國”。 我對此的理解是json_decode
部分需要在這可能之前工作。
如果您json_decode
返回null
,這意味着輸入字符串的格式無效。 您的文件包含一個 javascript 變量而不是 JSON 字符串。
這就是字符串應該如何格式化:
{
"countries": [
{"code": "GB", "name": "United Kingdom"},
{"code": "AF", "name": "Afghanistan"},
{"code": "ZM", "name": "Zambia"},
{"code": "ZW", "name": "Zimbabwe"}
]
}
擴展 Jerodev 的答案,如果您
不能
更改表示,則可以執行以下操作。
修改您的文件,以便用引號將鍵括起來。 就像是,
countries = [
{"code": "GB", "name": "United Kingdom"},
{"code": "AF", "name": "Afghanistan"},
// ...
{"code": "ZM", "name": "Zambia"},
{"code": "ZW", "name": "Zimbabwe"}
];
然后只需解碼 json 部分。
$str = file_get_contents('countrycodes.js');
$str = substr($str,12, strlen($str)-13); // do not include the semicolon
var_dump(json_decode($str));
然而這不是一個好方法,所以我仍然建議尋找其他方法來填充元素中的數據。
請注意, 12
是[
開始的位置,如果您對變量名稱或空格進行了任何更改,則(和13
)需要更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.