2016-07-18 36 views
-1

我正試圖在我的頁面上實現Tokenize2。代碼從JSON源提取數據的我可以在動態生成的JSON輸出上使用file_get_contents()嗎?

部分涉及這一行:

$obj = json_decode(file_get_contents('search_list.json'), true);

我有一個search_list.php,我從MySQL數據庫中提取數據,並生成JSON內容。但如果我將search_list.php放入file_get_contents(),它似乎不起作用。有沒有辦法解決這個問題?謝謝。

+0

您將不得不向HTTP服務器*發出請求,以便實際執行PHP,例如, 'HTTP://本地主機/ search_list.php'。但是,因爲您正在執行PHP,將一些結果編碼爲JSON,通過HTTP輸出JSON,讀取HTTP並將JSON解碼爲PHP數組.....只需跳過所有中間件,並直接執行與PHP相同的PHP代碼在'search_list.php'中;也許你只需要把這個邏輯放到一個你可以「包含」和調用的函數中。 – deceze

+0

'allow_url_fopen'必須在您的服務器上打開 - 檢查php設置。其他選項提供在http://stackoverflow.com/questions/3488425/php-ini-file-get-contents-external-url – dbmitch

回答

2

file_get_contents()不執行代碼。它只是吸取了一些字節,基本上是fopen(); fread(); fclose()的封裝。而已。

您必須爲include腳本,例如,

ob_start(); 
include('yourscript.php'); 
$json = ob_end_clean(); 

,但在這一點上,你應該問自己,而你要包括/執行該腳本,迫使它來生成一個JSON字符串,撕開這JSON字符串到一個PHP數組中的所有麻煩再次。 cpu資源的總體和絕對浪費。

你應該做的更好的東西,如:

function whatever($output = 'json') { 
     ... build data structure 
     if ($output == 'json') { 
     echo json_encode($data); 
     } else 
     return $data; 
     } 
    } 

它已經PHP代碼,您已經有了一個PHP數據結構中的所有數據,那麼爲什麼數據 - > json-的浪費一步>數據?

+0

感謝您的建議,我會給這個嘗試。我有一些使用我的PHP腳本作爲數據源的自動完成代碼,並且它很好地接受了它,這就是我試圖重用它的原因。我會稍微調整一下數據,所以我會遵循你的後一項建議。 – eluong

相關問題