// Copyright: Copyright (C) 2004-2007 Pristine Communications // 編碼規則: // 高位元組: A1-FE, 8E-A0, 81-8D // 低位元組: 40-7E, A1-FE // 常用字: A440-C67E // 次常用字: C940-F9D5 // 常用符號: A140-A3BF // 罕用符號: C6A1-C8FE // 控制碼: A3C0-A3E0 // Set the include path if (!defined("INCPATH_SET")) { require_once dirname(__FILE__) . "/incpath.inc.php"; } // Referenced subroutines require_once "monica/xfileio.inc.php"; // Settings define("_BIG5_VAR", "/tmp/big5.var"); $_BIG5 = null; // init_big5: Initialize the Big5 characters array function init_big5() { global $_BIG5; // Already initialized if (!is_null($_BIG5)) { return; } // Initialize from the existing table if (file_exists(_BIG5_VAR)) { eval(xfread(_BIG5_VAR)); return; } // Initialize the characters $_BIG5 = array( "常用字" => _big5_gen_chars(0xA440, 0xC67E), "次常用字" => _big5_gen_chars(0xC940, 0xF9D5), "常用符號" => _big5_gen_chars(0xA140, 0xA3BF), //"罕用符號" => _big5_gen_chars(0xC6A1, 0xC8FE), //"控制碼" => _big5_gen_chars(0xA3C0, 0xA3E0), ); // Save the result $string = "\$_BIG5 = " . var_export($_BIG5, true) . ";\n"; xfupdate(_BIG5_VAR, $string); return; } // _big5_gen_chars: Generate a range of Big5 characters function _big5_gen_chars($start, $end) { $chars = array(); for ($code = $start; $code <= $end; ) { $chars[] = pack("n", $code); # Next character $hi = $code & 0xFF00; $lo = $code & 0x00FF; if ($lo == 0xFE) { $lo = 0x40; $hi += 0x0100; } elseif ($lo == 0x7E) { $lo = 0xA1; } else { $lo++; } $code = $hi | $lo; } return $chars; } // big5_feq_chars: Return the Big5 frequently-used characters function &big5_feq_chars() { init_big5(); return $GLOBALS["_BIG5"]["常用字"]; } // big5_nonfeq_chars: Return the Big5 non-frequently-used characters function &big5_nonfeq_chars() { init_big5(); return $GLOBALS["_BIG5"]["次常用字"]; } // big5_punc_chars: Return the Big5 punctuation characters function &big5_punc_chars() { init_big5(); return $GLOBALS["_BIG5"]["常用符號"]; } ?>