PHPでテキストの読みやすさを調べる(Windowsアプリ版)

(1/1)
PHPで「PHPでクラスを使ってテキストの読みやすさを調べる」プログラムを作成したが、これをWindowsアプリに移植する。
PHP バージョン4でもクラスは利用できるが、バージョン5の予約語の一部が利用できない点と、bamcompile ではpreg系関数に動作不具合があるようなので、これらを回避する必要がある。

サンプル・プログラム

PHPでWindowsアプリ開発:テキストの読みやすさ

サンプル・プログラムの解説:文字カウント・クラス

0029: // クラス ===========================================================
0030: /**
0031:  * 文字カウント・クラス
0032: */
0033: class countKanji {
0034:     //プロパティ
0035:     var $moji   = 0;     //文字数
0036:     var $kanji  = 0;     //漢字の数
0037:     var $kuten  = 0;     //句点の数
0038:     var $toten  = 0;     //読点の数
0039:     var $kaigyo = 0;     //改行の数
0040:     var $flag   = FALSE; //countメソッドを実行したかどうか
0041: 
0042: /**
0043:  * 文字数をカウントする
0044:  * @param string $text入力テキスト
0045:  * @returnなし
0046: */
0047: function count($text) {
0048:     $len = mb_strlen($text);
0049:     for ($i = 0; $i < $len$i++) {
0050:         $ch = mb_substr($text$i, 1);
0051:         $this->moji++;
0052:         if (mb_ereg("[一-龠]+", $ch) == 1)     $this->kanji++;
0053:         if (mb_ereg("[。。..]+", $ch) == 1) $this->kuten++;
0054:         if (mb_ereg("[、、,,]+", $ch) == 1)    $this->toten++;
0055:         if (mb_ereg("[\n\r]+", $ch) == 1)     $this->kaigyo++;
0056:     }
0057:     $this->flag = TRUE;
0058: }
0059: 
0060: /**
0061:  * 文字数を返す
0062:  * @return int数/FALSE:countメソッド未実行
0063: */
0064: function moji() {
0065:     return $this->flag ? $this->moji : FALSE;
0066: }
0067: 
0068: /**
0069:  * 漢字数を返す
0070:  * @return int数/FALSE:countメソッド未実行
0071: */
0072: function kanji() {
0073:     return $this->flag ? $this->kanji : FALSE;
0074: }
0075: 
0076: /**
0077:  * 句点数を返す
0078:  * @return int数/FALSE:countメソッド未実行
0079: */
0080: function kuten() {
0081:     return $this->flag ? $this->kuten : FALSE;
0082: }
0083: 
0084: /**
0085:  * 読点数を返す
0086:  * @return int数/FALSE:countメソッド未実行
0087: */
0088: function toten() {
0089:     return $this->flag ? $this->toten : FALSE;
0090: }
0091: 
0092: /**
0093:  * 改行数を返す
0094:  * @return int数/FALSE:countメソッド未実行
0095: */
0096: function kaigyo() {
0097:     return $this->flag ? $this->$kaigyo : FALSE;
0098: }
0099: }

クラスの定義は、「PHPでクラスを使ってテキストの読みやすさを調べる」でつくったプログラムとほぼ同じである。
ただし、PHP バージョン4ではアクセス権を指定するプロパティ public, private, protected が利用できない。これらは省いた。

bamcompile の問題と思われるが、preg系関数を使うとEXEプログラムが落ちる。
そこで、関数  preg_match  の代わりに  mb_ereg  を用いた。ereg系関数は、PHPバージョン5では非推奨となったが仕方がない。

コンパイル

コマンドラインから "bamcompile countkanjiwin.bcp" を実行する。コンパイルが完了すると、"countkanjiwin.exe" が生成される。"countkanjiwin.exe" は、DLL不要で、単独で動作するEXEプログラムである。

参考サイト

(この項おわり)
header