2015-06-14 80 views
0

我試圖解析此JSON文件在PHP中:http://www.oref.org.il/WarningMessages/alerts.json獲取希伯來語JSON到PHP文件

此文件包含希伯來字母引起編碼問題。

我的腳本:

$content = file_get_contents('http://www.oref.org.il/WarningMessages/alerts.json'); 
$json = json_decode($content); 
echo $json->id; 

它只是不會顯示任何內容。我只是得到一個空白頁面。但如果我做echo $content;它完美地顯示json文件。

JSON文件例如:

{ 
"id" : "1434292591050", 
"title" : "פיקוד העורף התרעה באזור ", 
"data" : [] 
} 

我一直在閱讀一些其他類似的問題和解決方法,但沒有人幫助解決這個問題。我一直在嘗試使用mb_detect_encodingiconv,但它沒有幫助。

謝謝!

+0

顯示,你是如何嘗試使用'iconv'?什麼是腳本編碼? – umka

+0

@umka'$ content = iconv(「ISO-8859-8」,「UTF-8」,hebrev(iconv(「UTF-8」,「ISO-8859-8」,$ content)));'顯示一個空白頁。我不認爲iconv可以解決這個問題,但我把它作爲我嘗試過的東西的一個例子。腳本編碼是UTF-8。 – morha13

+0

如果你做了'var_dump($ json);'',你會得到什麼? – Elin

回答

1

你得到的文件內容是UTF-16字符集。你必須轉換它:

$content = file_get_contents('http://www.oref.org.il/WarningMessages/alerts.json'); 
$content=iconv("UTF-16", "UTF-8", $content); 
$json = json_decode($content,true); 
print_r($json); 
+0

非常感謝!我一直試圖修復它已經超過2小時了! – morha13

1

你可以嘗試以下iconv

$content = iconv('utf-16', 'utf-8', $content); 

然後json_decode工作正常,返回:

stdClass Object 
(
    [id] => 1434292591050 
    [title] => פיקוד העורף התרעה באזור 
    [data] => Array 
     (
     ) 

) 
+0

謝謝,但很抱歉umka先回答,但你的回答很好:) 你知道我該如何從數組中獲取數據? – morha13

+0

@MorHaviv其實,我第一次提前幾秒鐘:)。無論如何,關於數組,我想你正在談論'data'元素。你將能夠以與獲得其他元素相同的方式得到它(如你已經使用'id') - '$ array = $ json-> data;'。請注意,您必須使用'json_decode($ content);'。在末尾指定'true'標誌會返回關聯數組而不是'stdClass',在這種情況下,您不能用' - >'表示法引用對象。 – VolenD

+0

謝謝你的建議,但由於某種原因,它不工作。這是我的腳本:\t'$ content = file_get_contents('http://www.klh-dev.com/cumta/systems/testszone/alerts.json') ; \t $ content = iconv(「UTF-16」,「UTF-8」,$ content); \t $ json = json_decode($ content); \t $ cityArray =陣列( \t \t的 'id'=> 「 '」。$ JSON [ 'ID']。 「'」, \t \t '標題'=> 「'」。$ JSON [ '標題' ]''「, \t \t'areas'=>」'「。$ json-> data。」'「, \t);' – morha13