前提・実現したいこと
DOMXpathを用いて指定したURLのhtmlから特定タグを取り出し、その文章に対して形態素解析を行っています。<h5>タグを取り出した際に、以下のような結果になりました。
<$h5_values>
Array
(
[0] => 旅行代金(お一人様)
[1] => 追加料金(お一人様)
)
この配列($h5_values)に対して、各要素ごとにmecabを用いて形態素解析を行い、その結果を配列($mecab_result)に格納したいのですが、以下のように出力したいです。
Array(0)
(
[0] => 旅行 名詞,一般
[1] => 代金 名詞,一般
・
・
・
[6] => ) 記号,括弧閉
[7] => 追加 名詞,一般
[8] => 料金 名詞,一般
・
・
・
[13] => ) 記号,括弧閉
)
現時点では、$h5_valuesの0番目の要素が取れていないのと、解析結果全てが一つの要素として配列に入ってしまい困っています。
該当のソースコード
<!DOCTYPE html> <html> <head> <title>研究</title> </head> <body> <?php //対象URL $opts = array('http'=>array('header' => "User-Agent:MyAgent/1.0rn")); $context = stream_context_create($opts); $url = "https://search.mwt.co.jp/mintl/detail/CFMZ58AAH002.html?mediacd=ZTP"; $html = file_get_contents($url,false,$context); $dom = new DOMDocument; @$dom->loadHTML( mb_convert_encoding($html, 'HTML-ENTITIES', 'ASCII,JIS,UTF-8,eucJP-win,SJIS-win'), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD ); $xpath = new DOMXPath($dom); echo "/*------------<h5>----------------*/\n"; foreach ($xpath->query('//h5') as $h5_result){ $h5_values[]=$h5_result->nodeValue; } if(empty($h5_result->nodeValue)){ echo "該当なし"; } $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd'); $mecab = new \MeCab\Tagger($options); print_r($h5_values); $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd'); $mecab = new \MeCab\Tagger($options); foreach($h5_values as $n){ $mecab_result[] = $mecab->parse($n); } var_dump($mecab_result);
出力結果
<!DOCTYPE html> <html> <head> <title>研究</title> </head> <body> /*------------<h5>----------------*/ Array ( [0] => 旅行代金(お一人様) [1] => 追加料金(お一人様) ) string(381) "追加 名詞,サ変接続,*,*,*,*,追加,ツイカ,ツイカ 料金 名詞,一般,*,*,*,*,料金,リョウキン,リョーキン ( 記号,括弧開,*,*,*,*,(,(,( お 接頭詞,名詞接続,*,*,*,*,お,オ,オ 一人 名詞,固有名詞,人名,名,*,*,一人,カズト,カズト 様 名詞,接尾,人名,*,*,*,様,サマ,サマ ) 記号,括弧閉,*,*,*,*,),),) EOS
試したこと
php-mecabの動作は確認済みです。きちんと動作しています。
補足情報(FW/ツールのバージョンなど)
ubuntu18.04
Apache/2.4.29
PHP 7.2.5
辞書:mecab-ipadic-NEologd
回答1件
あなたの回答
tips
プレビュー