質問編集履歴

2

foreach文の中で$mecab_resultを$mecab_result[]とすることで0番目の要素を取得できました。

2018/07/02 09:14

投稿

agep31
agep31

スコア29

test CHANGED
File without changes
test CHANGED
@@ -144,17 +144,13 @@
144
144
 
145
145
 
146
146
 
147
- $mecab_result = [];
148
-
149
-
150
-
151
147
  $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd');
152
148
 
153
149
  $mecab = new \MeCab\Tagger($options);
154
150
 
155
151
  foreach($h5_values as $n){
156
152
 
157
- $mecab_result = $mecab->parse($n);
153
+ $mecab_result[] = $mecab->parse($n);
158
154
 
159
155
 
160
156
 

1

不要な変数の削除、自分の行ったことを載せました。

2018/07/02 09:14

投稿

agep31
agep31

スコア29

test CHANGED
@@ -1 +1 @@
1
- 配列にある要素に対して形態素解析を行い1つの配列に格納したい
1
+ 配列にある要素に対して形態素解析を行い配列に格納したい
test CHANGED
@@ -1,10 +1,10 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- DOMXpathを用いて指定したURLのhtmlから特定タグを取り出し、その文章に対して形態素解析を行っています。<h5>タグを取り出した際に、以下のような結果になりました。この配列($h5_values)に対して、各要素ごとにmecabを用いて形態素解析を行い、その結果をひとつの配列に格納したいのですが、方法がわかりません。
3
+ DOMXpathを用いて指定したURLのhtmlから特定タグを取り出し、その文章に対して形態素解析を行っています。<h5>タグを取り出した際に、以下のような結果になりました。
4
-
5
-
6
-
4
+
5
+
6
+
7
- <配列>
7
+ <$h5_values>
8
8
 
9
9
 
10
10
 
@@ -22,6 +22,52 @@
22
22
 
23
23
 
24
24
 
25
+
26
+
27
+
28
+
29
+
30
+
31
+ この配列($h5_values)に対して、各要素ごとにmecabを用いて形態素解析を行い、その結果を配列($mecab_result)に格納したいのですが、以下のように出力したいです。
32
+
33
+
34
+
35
+ Array(0)
36
+
37
+ (
38
+
39
+   [0] => 旅行 名詞,一般
40
+
41
+   [1] => 代金 名詞,一般
42
+
43
+   ・
44
+
45
+   ・
46
+
47
+   ・
48
+
49
+   [6] => ) 記号,括弧閉
50
+
51
+   [7] => 追加 名詞,一般
52
+
53
+   [8] => 料金 名詞,一般
54
+
55
+   ・
56
+
57
+   ・
58
+
59
+   ・
60
+
61
+   [13] => ) 記号,括弧閉
62
+
63
+
64
+
65
+
66
+
67
+ 現時点では、$h5_valuesの0番目の要素が取れていないのと、解析結果全てが一つの要素として配列に入ってしまい困っています。
68
+
69
+
70
+
25
71
  ### 該当のソースコード
26
72
 
27
73
 
@@ -72,10 +118,6 @@
72
118
 
73
119
 
74
120
 
75
- $h4_values = [];
76
-
77
-
78
-
79
121
  echo "/*------------<h5>----------------*/\n";
80
122
 
81
123
  foreach ($xpath->query('//h5') as $h5_result){
@@ -92,17 +134,81 @@
92
134
 
93
135
 
94
136
 
137
+ $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd');
138
+
139
+ $mecab = new \MeCab\Tagger($options);
140
+
141
+
142
+
95
143
  print_r($h5_values);
96
144
 
97
145
 
98
146
 
147
+ $mecab_result = [];
148
+
149
+
150
+
99
151
  $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd');
100
152
 
101
153
  $mecab = new \MeCab\Tagger($options);
102
154
 
155
+ foreach($h5_values as $n){
156
+
157
+ $mecab_result = $mecab->parse($n);
158
+
159
+
160
+
161
+ }
162
+
163
+ var_dump($mecab_result);
164
+
103
165
  ```
104
166
 
105
-
167
+ 出力結果
168
+
169
+ ```
170
+
171
+ <!DOCTYPE html>
172
+
173
+ <html>
174
+
175
+ <head>
176
+
177
+ <title>研究</title>
178
+
179
+ </head>
180
+
181
+ <body>
182
+
183
+ /*------------<h5>----------------*/
184
+
185
+ Array
186
+
187
+ (
188
+
189
+ [0] => 旅行代金(お一人様)
190
+
191
+ [1] => 追加料金(お一人様)
192
+
193
+ )
194
+
195
+ string(381) "追加 名詞,サ変接続,*,*,*,*,追加,ツイカ,ツイカ
196
+
197
+ 料金 名詞,一般,*,*,*,*,料金,リョウキン,リョーキン
198
+
199
+ ( 記号,括弧開,*,*,*,*,(,(,(
200
+
201
+ お 接頭詞,名詞接続,*,*,*,*,お,オ,オ
202
+
203
+ 一人 名詞,固有名詞,人名,名,*,*,一人,カズト,カズト
204
+
205
+ 様 名詞,接尾,人名,*,*,*,様,サマ,サマ
206
+
207
+ ) 記号,括弧閉,*,*,*,*,),),)
208
+
209
+ EOS
210
+
211
+ ```
106
212
 
107
213
  ### 試したこと
108
214
 
@@ -112,6 +218,8 @@
112
218
 
113
219
 
114
220
 
221
+
222
+
115
223
  ### 補足情報(FW/ツールのバージョンなど)
116
224
 
117
225