100 lines
2.5 KiB
PHP
100 lines
2.5 KiB
PHP
<?php
|
|
// File name: big5.inc.php
|
|
// Description: PHP subroutine to deal with Big5 characters
|
|
// Date: 2004-04-17
|
|
// Author: imacat <imacat@pristine.com.tw>
|
|
// 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"]["常用符號"];
|
|
}
|
|
|
|
?>
|