例えば、初心者用シューズという文字列の読み方を取得したいとする。

読み方を取得する時は、Mecabというものを利用すれば良くて、以前、PHPで形態素解析エンジンのMaCabを使用する為の手順のメモで使ったphp-mecabを利用しようとしたが、PHP8ではマクロの箇所でエラーになり使用できない。

Mecab - Wikipedia


そこで力技で読み方を取得するコードを書いてみた。


環境

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を動かすライブラリが欲しいな。