前提・実現したいこと
phpを用いて文字列の一致が判断できるものを作っています。
wikipediaから取得してきた文章を抽出しmecabにより名詞のみを抽出し、あらかじめ作っておいた辞書(jisyo.txt)の中身と一致した場合に"a"と表示したいです。
以下があらかじめ作っておいた辞書です。
<辞書(jisyo.txt)>
テロ
強盗
暴動
クーデター
地雷
殺人
爆弾
テロリスト
ひったくり
盗難
置き引き
”暴力”をwikipediaで検索し取得した文章から”殺人”という名詞を抽出できています。ですので、最後にstrcmp関数を使って辞書と一致しているかforeachを使っているのですが、"a"が表示されません。
該当のソースコード
<?php // // キーワード指定/ $keyword = "暴力"; // // APIのURL $url = "http://wikipedia.simpleapi.net/api?keyword=".urlencode($keyword)."&output=php"; // // データを取得 $data = file_get_contents($url) ; // // PHPシリアライズパーサーを利用して解析し、配列に入れる $array = unserialize($data); echo "<pre>"; //print_r($array); echo "</pre>"; $text = $array[0]['body']; echo $text; $options = array('-d', '/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd'); $mecab = new \MeCab\Tagger($options); $nodes = $mecab->parseToNode($text); foreach($nodes as $tmp2){ if($tmp2->getPosId() == 38 && preg_match("/[^a-zA-Z]+/u", $tmp2->getSurface())){ $result[] = $tmp2->getSurface(); } } $out = array_count_values($result); arsort($out); echo "<pre>"; //print_r($out); echo "</pre>"; //辞書の読み込み $filename = "jisyo.txt"; $pn = file($filename); foreach($result as $tmp){ foreach($pn as $tmp2_pn){ if(strcmp($tmp,$tmp2_pn) == 0){ echo "a"; } //echo $tmp."と".$tmp2_pn; } }
試したこと
文字エンコードの問題かと思って$tmpと$tmp2_pnをmb_convert_encoding関数を使って"utf-8"に直してみたのですが、結果は変わらずでした。
補足情報(FW/ツールのバージョンなど)
ubuntu18.04
Apache/2.4.29
PHP 7.2.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/17 08:17
2018/10/17 08:22
2018/10/18 04:37