2016-07-18 3 views
-1

私のページにTokenize2を実装しようとしています。動的に生成されたJSON出力でfile_get_contents()を使用できますか?

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

私はMySQLデータベースからデータを取得し、JSONコンテンツを生成search_list.phpを有する:JSONソースからデータを取得するためのコードの

一部は、この行を含みます。しかし、もし私がfile_get_contents()search_list.phpを入れると、うまくいかないようです。これを回避する方法はありますか?ありがとう。

+0

PHPが実際に実行されるHTTPサーバ*にリクエストする必要があります。 'http:// localhost/search_list.php'。しかし、PHPを実行して、結果をJSONとしてエンコードし、HTTP経由でJSONを出力し、HTTPを読み、JSONを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文字列を生成することを強制し、PHPの配列に離れているJSON文字列を引き裂くのすべての問題になるだろうしながら、その時点で、あなたは自問しなければなりません再び。 cpuリソースの総量と絶対的な無駄。以下のよう

あなたは、より良い何かをする必要があります:それは、すでにPHPコードです

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

、すでにPHPのデータ構造にすべてのデータを持っていたので、なぜデータ - > json->データの無駄なステップを行います?

+0

アドバイスをいただきありがとうございます。私はこれを試してみましょう。私はデータソースとしてPHPスクリプトを使用したいくつかのオートコンプリートコードを持っていて、それをうまく受け入れました。そのため、再利用しようとしていました。私はちょっとデータを微調整していますので、後者の勧告に従います。 – eluong

関連する問題