2012-02-20 88 views
0

我有這樣的* .txt文件裏面。JSON裏面的函數,(PHP解析)

function_name({"one": {"id": "id_for_one", "value": "value_for_one"}, ...}); 

而且我收到的文件是這樣的:

$source = 'FILE_NAME.txt'; 
$json = json_decode(file_get_contents($source),true); 
echo $json['one']['value']; 

它不工作,但是當我刪除function_name();它的工作原理。 如何解析它而不刪除這些字符串?

+2

什麼是'function_name()'? – entropid 2012-02-20 21:19:51

+0

你想達到什麼目的? – 2012-02-20 21:20:01

+0

這應該是一個JS回調函數。 – 2012-02-20 21:21:24

回答

0

你的文本文件中的函數意味着它不是一個json文件。

使用正則表達式刪除該字符串,並解決了您的問題。

如果函數是一個固定的名字,做這樣的事情:

$source = 'FILE_NAME.txt'; 
$json_content = str_replace('function_name(', '', file_get_contents($source)); 
$json_content = substr($json_content,0,-2); 
$json = json_decode($json_content,true); 
echo $json['one']['value']; 
+0

如果'function_name'出現在JSON中呢? – 2012-02-20 21:26:16

+0

如果在JSON內部,則會變成一個字符串。或者將使您的對象無效,如果無效,也不是JSON。看看這篇文章http://www.json.org/ – 2012-02-20 21:28:35

1

你不能。這些與JSON無效。取一個排除它們的子字符串。

1

您將不得不刪除這些字符串。使用function_name部分,它不是有效的JSON。 (數組符號)或[(數組表示法),但也可以是標量值,如字符串或數字。沒有首先確保字符串是有效的JSON,就不能解析它。

+0

JSON不必包含在對象或數組中。 – 2012-02-20 21:23:02

1

您正試圖得到一個文件中的字符串,並將其解碼爲JSON文件。

'function_name'不是一個有效的JSON字符串,其餘的是在裏面。

1

如何解析它而不刪除這些字符串?

有沒有辦法。
這應該適合你。

$data = file_get_contents($source); 
$data = substr($data, strlen("function_name(")); 
$data{strlen($data)-1}=$data{strlen($data)-2}=" "; 
$json = json_decode($data,true); 

兩個{}[]作品串訪問單個字符。