🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSON

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

PHP

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

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Q&A

解決済

1回答

559閲覧

php-mecabを使ってjsonのテキストを解析したい

退会済みユーザー

退会済みユーザー

総合スコア0

JSON

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

PHP

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

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

0グッド

0クリップ

投稿2019/10/03 06:09

編集2019/10/03 06:51

前提・実現したいこと

twitter api でデータを取得してjsonに保存したあと、php-mecabを使ってtextの部分だけ取り出して解析し出力させたいです。
配列で指定して表示させたいのですが、下記のコードじゃもちろん出力されませんでした
Illegal string offset となり、取り出し方が分かりません。

該当のソースコード

mecab.php

1<?php 2 3$file = file_get_contents("tweets.json"); 4$text = file['statuses'][0]['text']; 5$options = array('-d', '/usr/local/lib/mecab/dic/mecab-ipadic-neologd'); 6 7$mecab = new \MeCab\Tagger($options); 8$nodes = $mecab->parseToNode($text); 9var_dump($nodes); 10foreach ($nodes as $n) 11{ 12 13 echo $n->getSurface() . "<br />"; 14 echo $n->getFeature() . "<br />"; 15} 16?> 17

tweets.json

1{ 2 "statuses": [ 3 { 4 "created_at": "Thu Oct 03 04:51:38 +0000 2019", 5 "id": 1179619999343734784, 6 "id_str": "1179619999343734784", 7 "text": "東京都文京区本郷七丁目三-一\n東京大学がある", 8 "truncated": false, 9 "entities": { 10 "hashtags": [ 11 { 12 "text": "", 13 "indices": [ 14 0, 15 7 16 ] 17 } 18 ], 19 "symbols": [], 20 "user_mentions": [], 21 "urls": [] 22 }, 23 "metadata": { 24 "iso_language_code": "ja", 25 "result_type": "recent" 26 }, 27 "source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Twitter Web App</a>", 28 "in_reply_to_status_id": null, 29 "in_reply_to_status_id_str": null, 30 "in_reply_to_user_id": null, 31 "in_reply_to_user_id_str": null, 32 "in_reply_to_screen_name": null, 33 "user": { 34 "id": , 35 "id_str": "", 36 "name": "", 37 "screen_name": "", 38 "location": "", 39 "description": "", 40 "url": null, 41 "entities": { 42 "description": { 43 "urls": [] 44 } 45 }, 46 "protected": false, 47 "followers_count": 1, 48 "friends_count": 3, 49 "listed_count": 0, 50 "created_at": "", 51 "favourites_count": 1, 52 "utc_offset": null, 53 "time_zone": null, 54 "geo_enabled": false, 55 "verified": false, 56 "statuses_count": 85, 57 "lang": null, 58 "contributors_enabled": false, 59 "is_translator": false, 60 "is_translation_enabled": false, 61 "profile_background_color": "F5F8FA", 62 "profile_background_image_url": null, 63 "profile_background_image_url_https": null, 64 "profile_background_tile": false, 65 "profile_image_url": "http://pbs.twimg.com/profile_images/1075989853701984256/cfTYj2mr_normal.jpg", 66 "profile_image_url_https": "https://pbs.twimg.com/profile_images/1075989853701984256/cfTYj2mr_normal.jpg", 67 "profile_link_color": "1DA1F2", 68 "profile_sidebar_border_color": "C0DEED", 69 "profile_sidebar_fill_color": "DDEEF6", 70 "profile_text_color": "333333", 71 "profile_use_background_image": true, 72 "has_extended_profile": true, 73 "default_profile": true, 74 "default_profile_image": false, 75 "following": false, 76 "follow_request_sent": false, 77 "notifications": false, 78 "translator_type": "none" 79 }, 80 "geo": null, 81 "coordinates": null, 82 "place": null, 83 "contributors": null, 84 "is_quote_status": false, 85 "retweet_count": 0, 86 "favorite_count": 0, 87 "favorited": false, 88 "retweeted": false, 89 "lang": "ja" 90 }, 91

発生している問題・エラーメッセージ

var_dumpの結果 object(MeCab\Node)#2 (0) { } BOS/EOS,*,*,*,*,*,*,*,* f 名詞,固有名詞,組織,*,*,*,* BOS/EOS,*,*,*,*,*,*,*,*
Illegal string offset 'statuses' in /var/www/html/mecab.php on line 7 PHP Warning: Illegal string offset 'text' in /var/www/html/mecab.php on line 7

補足情報(FW/ツールのバージョンなど)

phpv7.0.33
ubuntu16.04

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

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

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

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

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

m.ts10806

2019/10/03 06:33

var_dump()の結果はどうなっているのでしょうか。
退会済みユーザー

退会済みユーザー

2019/10/03 06:43

object(MeCab\Node)#2 (0) { } BOS/EOS,*,*,*,*,*,*,*,* f 名詞,固有名詞,組織,*,*,*,* BOS/EOS,*,*,*,*,*,*,*,* 上記のようになっています。 Illegal string offset 'statuses' in /var/www/html/mecab.php on line 7 Illegal string offset 'text' in /var/www/html/mecab.php on line 7 とエラーが出ています。
m.ts10806

2019/10/03 06:46

Illegal string offsetなので、取り出し方だけじゃないでしょうか。
退会済みユーザー

退会済みユーザー

2019/10/03 06:47

すみません書き方が悪かったです。 取り出し方が分からず、質問しました。 質問を訂正しておきます。
guest

回答1

0

ベストアンサー

decodeすることによって解決しました。
ありがとうございました。

投稿2019/10/03 07:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問