例えば、初心者用シューズという文字列の読み方を取得したいとする。
読み方を取得する時は、Mecabというものを利用すれば良くて、以前、PHPで形態素解析エンジンのMaCabを使用する為の手順のメモで使ったphp-mecabを利用しようとしたが、PHP8ではマクロの箇所でエラーになり使用できない。
そこで力技で読み方を取得するコードを書いてみた。
環境
OS:Ubuntu 20.04
PHP:8.0.10
Mecabのインストールは下記の通り。
sudo apt install mecab sudo apt install libmecab-dev sudo apt install mecab-ipadic-utf8 #インストールの確認 mecab -v
PHPのCLIから力技でMacabを使うコードは下記の通り。
/path/to/dir/mecab.php
<?php $itemName = "初心者用シューズ"; exec("echo " . $itemName . " | mecab", $res); if(is_array($res) && count($res)){ $katakana = ""; foreach($res as $v){ $arr = explode(",", $v); //idx:7にカタカナの読み方がある if(count($arr) < 8) continue; $katakana .= $arr[7]; } var_dump($itemName); var_dump($katakana); // カタカナからひらがなに変換する $hiragana = mb_convert_kana($katakana, "c"); var_dump($hiragana); }
ファイルを保存して実行してみる。
$ php /path/to/dir/mecab.php string(24) "初心者用シューズ" string(36) "ショシンシャヨウシューズ" string(36) "しょしんしゃようしゅーず"
とりあえず、要件を満たす結果は返ってきた。
PHP8でMecabを動かすライブラリが欲しいな。