PHPってレンタルサーバで動くことが多いので、mecabモジュールなんて期待できない。
そこで考えた。もうセイキヒョウゲンでいいや。YahooのAPIも良いけれど、簡単なテストでそれは不要だろう。
正規表現でカタカナ・漢字・ひらがなに分割して分かち書きっぽいことする。
単語境界で区切るPHP
word_boundary.php
<?php $str="これはテストです。動作するかなぁ" preg_match_all('/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+/u', $str, $matches); print_r($matches); // マッチ結果が全出力
出力結果
Array ( [0] => Array ( [0] => これは [1] => テスト [2] => です [3] => 動作 [4] => するかなぁ ) )
十分です。
カタカナだけ抜き出すなら。
word_KATAKANA.php
<?php $str="これはテストです。動作するかなぁ"; preg_match_all('/[ァ-ヴー]+/u', $str, $matches); print_r($matches); // マッチ結果が全出力
実行結果
Array ( [0] => Array ( [0] => テスト ) )
ちゃんと最長のカタカナが取得できます。これで十分じゃないか。
漢字だけ抜き出す。
word_KANJI.php
<?php <?php $str="これはテストです。動作するかなぁ"; //preg_match_all('/[一-龠]+|[ぁ-ん]+|[ァ-ヴー]+|[a-zA-Z0-9]+|[a-zA-Z0-9]+/u', $str, $matches); preg_match_all('/[一-龠]+/u', $str, $matches); print_r($matches); // マッチ結果が全出力
結果
Array ( [0] => Array ( [0] => 動作 ) )
mecab より未知語
未知語に対応しやすいんじゃないかと思う。人名とか。