[PHP]漢字をひらがなに変換する

Pocket

前回 igo-php を用いた形態素解析について述べたので、
今回はそちらを使って漢字を含む文章をひらがなに変換するプログラムを作ってみます。

<?php
require_once 'lib/Igo.php';

$igo = new Igo(dirname(__FILE__) . "/ipadic");
$text = "漢字は、古代中国に発祥を持つ文字。特に中国語を表記するための文字である。";

$result = $igo->parse($text);
$str = "";
foreach($result as $value){
	 $feature = explode(",", $value->feature);
	 $str .= isset($feature[7]) ? $feature[7] : $value->surface;
}
echo mb_convert_kana($str, "c", "utf-8");

結果:
かんじは、こだいちゅうごくにはっしょうをもつもじ。とくにちゅうごくごをひょうきするためのもじである。

parse() されたテキストの読みがなは、feature 内のカンマ区切りされた8番目にあるので、
それを繋げば読みがなをつけることができます。
feature の読みはカタカナで書かれているので最後に全てひらがなに統一してあります。


Similar Posts:




  1. はじめまして。
    ご質問させていただきたいことがあるのですが、
    このソースを実行した際にひらがなではなくカタカナに変換されてしまうみたいです。
    最後にひらがなに統一する「echo mb_convert_kana($str, “c”, “utf-8”);」が問題なのでしょうか?

  2. お読み頂きありがとうございます。

    通常の出力結果は全角カタカナとして出力されるため、
    最後の「mb_convert_kana」でひらがなに変更する仕組みです。
    何らかの理由でこれがうまく働かないとそのままカタカナで出力されることになります。

    こちらの環境では特に問題なくひらがなで表示されているので、
    お使いのサーバーで「mb_convert_kana」が正常に機能しているか確認する必要があるかもしれません。

    また、環境によっては次の二行を先頭に加えると解決する場合があります。

    mb_language("ja");
    mb_internal_encoding("utf-8");

    他にもファイルの文字コードの問題や、オプションの「c」を大文字で書いている等考えられますので、
    一度カタカナをひらがなに変換するだけのシンプルなプログラムを書いて
    サーバーでテストしてみると何かわかるかと思います。

  3. 返信ありがとうございます。
    教えていただいた通りカタカナをひらがなに変換する簡単なプログラムを書いてみたところ無事変換されましたので、
    漢字→カタカナ、カタカナ→ひらがなと分けてやったらできました!
    ありがとうございました。

  4. ありがとうございました。活用できました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です