質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

440閲覧

PHPをJSONファイルとして表示したい

EVILSTAR

総合スコア13

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/03/08 03:55

実現したい内容

ファイルの拡張子は.phpで、PHPを実行するとJSONとして表示され、保存したときの拡張子は.php.jsonとなるPHPを書きたいです。
作りたいものと同じように表示されるサイトです。
↑ ご確認をお願い致します。

私が作れたもの

{ "VERSION": { "id": "2016-06-08 13:54:40" }, "INFODATA": { "0": { "category": "Porn", "date": "2019/03/08(金)12時41分25秒", "serchWord": "朝日みくる", "thumbnail": "http://pbs.twimg.com/profile_images/980958368041918464/nl7CBoSG_normal.jpg", "thumbnailID": "p1500050", "title": "朝日みくる", "summary": "ニューハーフのAVを布教するのは流石にハードル高いと思った" }, "1": { "category": "Porn", "date": "2019/03/08(金)12時41分18秒", "serchWord": "鈴木リズ@AV監督&営業&広報????減量中!", "thumbnail": "http://pbs.twimg.com/profile_images/967585174467756033/1AR8EQSf_normal.jpg", "thumbnailID": "p1500050", "title": "鈴木リズ@AV監督&営業&広報????減量中!", "summary": "RT @omoti194: あたい、ゲイ風俗で色々な世界と人を知り始める(前編) 後編は来週の金曜にアップします???? 今までのお話はこちらから読めますわ???? https://t.co/USDyTuOGXr https://t.co/Mfaptx0ZO8" } }, "e0": { "category": "Porn", "version": "1", "template": "http://afururu.s25.xrea.com/www/detail/det_sample.html", "date": "2019/03/08(金)12時41分25秒", "hiddenDate": "2019/03/09", "title": "朝日みくる", "tag": "AV,セクシー", "template": "Girl/Twitter", "summary": "沖縄生まれのニューハーフ、オタクで甘えんぼな、「みくるん」こと朝日みくるです。 ニューハーフヘルスLIBE東京店に所属してます。", "thumbnail": "http://pbs.twimg.com/profile_images/980958368041918464/nl7CBoSG_normal.jpg", "image": "https://pbs.twimg.com/profile_banners/796613842658848768/1524577764", "description": "朝日みくる", "serchWord": "朝日みくる", "siteName": "MikuruAsahi", "url": "https://t.co/NehOXZFzen", "lat": "", "lng": "", "address": "ニューハーフヘルスLIBE東京店", "tel": "", "streetview": "朝日みくる", "maker": "maker_ev", "cite": "Twitter" } }

該当のソースコード

<?php // 設定 $bearer_token = '秘密????'; // ベアラートークン $request_url = 'https://api.twitter.com/1.1/lists/statuses.json'; // エンドポイント // パラメータ (オプション) $params = array( "list_id" => "秘密????" ); // パラメータがある場合 if ($params) { $request_url .= '?' . http_build_query($params); } // リクエスト用のコンテキスト $context = array( 'http' => array( 'method' => 'GET', // リクエストメソッド 'header' => array( // ヘッダー 'Authorization: Bearer ' . $bearer_token ) ) ); // cURLを使ってリクエスト $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $request_url); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $context['http']['method']); // メソッド curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 証明書の検証を行わない curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // curl_execの結果を文字列で返す curl_setopt($curl, CURLOPT_HTTPHEADER, $context['http']['header']); // ヘッダー curl_setopt($curl, CURLOPT_TIMEOUT, 5); // タイムアウトの秒数 $res1 = curl_exec($curl); $res2 = curl_getinfo($curl); curl_close($curl); // 取得したデータ $json = substr($res1, $res2['header_size']); // 取得したデータ $header = substr($res1, 0, $res2['header_size']); // レスポンスヘッダー // JSONをオブジェクトに変換 $obj = json_decode($json, true); // 出力 $json_count = count($obj); file_put_contents('TwitterList.json', $json); echo '{<br>'; echo '&nbsp &nbsp "VERSION": {<br>'; echo '&nbsp &nbsp &nbsp &nbsp "id": "2016-06-08 13:54:40"<br>'; echo '&nbsp &nbsp },<br>'; echo '&nbsp &nbsp "INFODATA": {<br>'; for ($i = 0; $i <= 1; $i++) { echo '&nbsp &nbsp &nbsp &nbsp "'. $i . '": {<br>'; echo '&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp "category": "Porn",<br>'; $created_at = $obj[$i]["created_at"]; $week = ['日','月','火','水','木','金','土']; $day = date('w'); $datetime = date('Y/m/d(' . $week[$day] . ')H時i分s秒', strtotime($created_at)); echo '&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp "date": "' . $datetime . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp "serchWord": "' . pg_escape_string($obj[$i]["user"]["name"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp "thumbnail": "' . $obj[$i]["user"]["profile_image_url"] . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp "thumbnailID": "p1500050",<br>'; echo '&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp "title": "' . pg_escape_string($obj[$i]["user"]["name"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp "summary": "' . pg_escape_string($obj[$i]["text"]) . '"<br>'; if ($i < 1) { echo '&nbsp &nbsp &nbsp &nbsp },<br>'; } else { echo '&nbsp &nbsp &nbsp &nbsp }<br>'; } } echo '&nbsp &nbsp },<br>'; for ($i = 0; $i <= $json_count - 1; $i++) { echo '&nbsp &nbsp "e'. $i . '": {<br>'; echo '&nbsp &nbsp &nbsp &nbsp "category": "Porn",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "version": "1",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "template": "http://afururu.s25.xrea.com/www/detail/det_sample.html",<br>'; $created_at = $obj[$i]["created_at"]; $week = ['日','月','火','水','木','金','土']; $day = date('w'); $datetime = date('Y/m/d(' . $week[$day] . ')H時i分s秒', strtotime($created_at)); echo '&nbsp &nbsp &nbsp &nbsp "date": "' . $datetime . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "hiddenDate": "' . date('Y/m/d', strtotime('+1 day')) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "title": "' . pg_escape_string($obj[$i]["user"]["name"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "tag": "AV,セクシー",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "template": "Girl/Twitter",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "summary": "' . pg_escape_string($obj[$i]["user"]["description"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "thumbnail": "' . $obj[$i]["user"]["profile_image_url"] . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "image": "' . pg_escape_string($obj[$i]["user"]["profile_banner_url"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "description": "' . pg_escape_string($obj[$i]["user"]["name"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "serchWord": "' . pg_escape_string($obj[$i]["user"]["name"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "siteName": "' . pg_escape_string($obj[$i]["user"]["screen_name"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "url": "' . pg_escape_string($obj[$i]["user"]["url"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "lat": "' . pg_escape_string($obj[$i]["user"]["coordinates"]["coordinates"]["0"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "lng": "' . pg_escape_string($obj[$i]["user"]["coordinates"]["coordinates"]["1"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "address": "' . pg_escape_string($obj[$i]["user"]["location"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "tel": "",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "streetview": "' . pg_escape_string($obj[$i]["user"]["name"]) . '",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "maker": "maker_ev",<br>'; echo '&nbsp &nbsp &nbsp &nbsp "cite": "Twitter"<br>'; if ($i < $json_count - 1) { echo '&nbsp &nbsp &nbsp &nbsp },<br>'; } else { echo '&nbsp &nbsp &nbsp &nbsp }<br>'; } } echo '}';

困っていること

どのようにしたら、PHPをJSONとして表示できるでしょうか?
echoで記述したら文字列が表示されるだけと分かっているのですが、.phpのままJSONを表示する方法が分かりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

headerでタイプやファイル名を出力します。

PHP

1<?php 2header("Content-Type: application/json"); 3header("Content-Disposition: attachment;filename=foo.php.json"); 4 5echo <<<EOS 6{ 7 "VERSION": { 8 "id": "2016-06-08 13:54:40" 9 }, 10} 11EOS;

#追記
ああ、ファイル名を指定してダウンロードさせたいのかと思いました。
表示させるだけなら、1つめだけでいいです。charsetも指定してください。
その代わりファイル名は指定できません。リンク先もそうですよね?

投稿2019/03/08 04:18

編集2019/03/08 04:23
otn

総合スコア84533

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EVILSTAR

2019/03/08 05:15

header("Content-Type: application/json; charset=utf-8"); これで解決しました。ありがとうございました。
guest

0

echoで記述したら文字列が表示されるだけと分かっているのですが

それで問題ないです。

php

1// $arrにデータを詰め込む 2echo json_encode($arr);

投稿2019/03/08 04:06

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

EVILSTAR

2019/03/08 05:16

回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問