PHPから KAKASI を呼び出す
PHPから KAKASI を呼び出し、本プログラムの中心機能を担っているのが parsing 関数である。
KAKASI には、コマンドライン・オプションを使って様々な機能を提供する。ここでは w オプションを使い、分かち書き(単語に分解)機能を利用させてもらう。これを記述したのが 29 行目である。
echo コマンドを使って入力データ(日本語テキスト)$str をパイプを使って KAKASI に渡す。
コマンドラインで、この処理を実行すると、画面(標準出力)に分解された単語がスペース区切りで出力される。
popen 関数は、実行したコマンドの出力結果を fgets 関数で取得できるようにするストリーム関数である。
なお、PHP がセーフモードで動作しているようなサーバ(当サイトもそうである)では、popen 関数の動作が許可されない。この場合は、本プログラムを CGI として動作させる必要がある。具体的には、ソース・ファイルの冒頭行に PHP の実行パス(例 #!/usr/bin/php)を記述し、parsewords.cgi という名前でセーブし、実行権限を与える。これでも動作しない場合は、サーバ管理者と相談してほしい。
popen 関数でオープンしたハンドルから処理結果を順次 fgets 関数で取り出し(60行目)、区切り文字を指定して配列変数に分解する(62行目)。
PHP では文字列を添え字とする連想配列が利用できる。配列 $array は単語を添え字とする連想配列とし、出現回数を変数値として登録していく(66〜67行目)。
その他のプログラム
あとは、parsing 関数の呼び出しであるが、 ここでは入力テキストから1行ずつ文字列を取り出すために strtok 関数 を利用している(75〜79行目)。(この処理に関するアドバイスをいただいた jk さんに御礼申し上げます)
処理結果の出力は table 形式にしたが、 for ループを使って出現回数の多い順に一覧表示するようにした(89〜93行目)。
| 2007年09月09日更新 | ||
| <<前へ | <目次> | 次へ>> |
| 戻る | 【関連ページ】 | |