サンプル・プログラム
サンプル・プログラムの解説:文字カウント・クラス
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 バージョン4ではアクセス権を指定するプロパティ public, private, protected が利用できない。これらは省いた。
bamcompile の問題と思われるが、preg系関数を使うとEXEプログラムが落ちる。
そこで、関数 preg_match の代わりに mb_ereg を用いた。ereg系関数は、PHPバージョン5では非推奨となったが仕方がない。
コンパイル
参考サイト
- PHPでクラスを使ってテキストの読みやすさを調べる:ぱふぅ家のホームページ
PHP バージョン4でもクラスは利用できるが、バージョン5の予約語の一部が利用できない点と、bamcompile ではpreg系関数に動作不具合があるようなので、これらを回避する必要がある。