PHPとKAKASIを使って単語に分解する (その2)

(1/1)
KAKASI を使って漢字かなまじり文を平仮名やローマ時に変換するプログラムの続きである。今回は、テキストだけでなく、ファイルや URL を指定して分解できるように機能を拡張した。

サンプル・プログラムの実行例

PHPとKAKASIを使って単語に分解する(その2)

サンプル・プログラム

解説:ファイルやURLからテキストを読み込む

0260: //ファイル
0261: if (isset($_FILES['upload']['tmp_name']) && ($_FILES['upload']['tmp_name'] != '')) {
0262:     $sour = file_get_contents($_FILES['upload']['tmp_name']);   //ファイルを一気に読み込む
0263:     $sour = mb_convert_encoding($sour, INTERNAL_ENCODING, 'auto');
0264:     $sour = strip_tags($sour);       //タグを消去しておく
0265:     if ($sour == FALSE) {
0266:         $errmsg = 'ファイル ' . $_FILES['upload']['tmp_name'] . ' は存在しません';
0267:     }
0268: 
0269: //URL
0270: else if ($url != '') {
0271:     $sour = file_get_contents($url); //コンテンツを一気に読み込む
0272:     $sour = mb_convert_encoding($sour, INTERNAL_ENCODING, 'auto');
0273:     $sour = strip_tags($sour);       //タグを消去しておく
0274:     if ($sour == FALSE) {
0275:         $errmsg = 'URL ' . $url. ' は存在しません';
0276:     }
0277: }
0278: 
0279: //テキスト
0280: if (($errmsg == '') && ($sour != '') && isButton('exec')) {
0281:     //複数ある空行を消去
0282:     $sour = preg_replace("/\n+/msiu", "\n", $sour);
0283:     //1行ずつ取り出して単語に分解する
0284:     $str = strtok($sour, "\n");
0285:     if ($str == FALSE) {
0286:         $errmsg = '単語分解に失敗';
0287:     } else {
0288:         while ($str != FALSE) {
0289:             $enc = parsing(KAKASI$str$words);
0290:             if ($enc == FALSE) {
0291:                 $errmsg = '単語分解に失敗';
0292:                 break;
0293:             }
0294:             $str = strtok("\n");
0295:         }
0296:         arsort($words);  //出現回数の多い順に並び替え
0297:     }
0298: }

ファイルから分解テキストを読み込むには、組み込み変数 $_FILES['upload']['tmp_name'] があれば、組み込み関数  file_get_contents  を用いてファイル内容を変数 $sour に読み込む。
読み込んだら、組み込み関数  mb_convert_encoding  で文字エンコードを揃え、HTML タグを組み込み関数  strip_tags  を使って取り除いておく。

URL から分解テキストを読み込む流れも同様である。
いずれも、読み込めたかどうかエラー処理を加えておく。

あとは、「PHP と KAKASI を使って単語に分解する(その 1)」と同様、KAKASI を使ってテキストを単語に分解していく。

参考サイト

(この項おわり)
header