[問題]全論壇繁簡轉換
發表於 : 2007-02-15 09:39
現回報一下使用狀況:
在I.E.下可以使用但Firefox下則沒有效用(無反應)!
在I.E.下可以使用但Firefox下則沒有效用(無反應)!
代碼: 選擇全部
test.php
<?
function test($str){
return str_replace("php2000","y10k",$str);
}
ob_start("test");
echo "hello php2000";
ob_end_flush();
?>代碼: 選擇全部
<?
function gb2big5($str) {
global $_gb_big5_;
$leng = strlen($str)-1;
for($i = 0; $i<$leng; $i++){
$h = ord($str[$i]);
if($h>=160){
$l = ord($str[$i+1]);
$gb=($h==161 && $l==64)?" " : substr($_gb_big5_, ($h-160)*510+($l-1)*2, 2);
$str[$i] = $gb[0];
$str[$i+1] = $gb[1];
$i++;
}
}
return $str;
}
?> 代碼: 選擇全部
<?
session_start(); // 打開session 功能,用於在各個頁面之間自動傳遞標誌
if(!session_is_registered("php2000_big5")){ // 檢查繁簡體標誌的注冊狀態
session_register("php2000_big5"); // 注冊繁簡體標誌,簡體=0;繁體=1
$php2000_big5=0; // 默認爲簡體
}
$php2000_big5 = ($php2000_big5+1)%2; // 切換繁簡體狀態
header("location:".getenv("HTTP_REFERER")); // 返回其調用頁面
?> 代碼: 選擇全部
<?
Session_start();
function translate_gb2big5($str) {
$str = gb2big5($str); // 轉化爲 big5
$str = str_replace('charset=gb2312', 'charset=big5', $str); // 替換字符類型
header('Content-Type: text/html; charset=big5'); // 繁體文件頭
return $str;
}
if(session_is_registered("php2000_big5") && ($php2000_big5==1)){ // 判斷標誌
$fp = fopen('big5.table', 'r'); // big5的字庫表
$_gb_big5_ = fread($fp, filesize('big5.table')); // 讀出數據
fclose($fp);
ob_start('translate_gb2big5'); // 啓動輸出信息控制
}
?> 代碼: 選擇全部
<?
require("require.php");
echo "大家好,這裏是 PHP ";
?>
<a href=php2000_gb_big5.php>
<?
if($php2000_big5==1)echo "GB";
else echo "Big5";
?>
</a> 代碼: 選擇全部
<?
if(session_is_registered("php2000_big5") && ($php2000_big5==1))
{
// 修改成使用共享內存
// 判斷是否已經創建,打開50000字節的 0xff3 段的共享內存
$shm_id = @shmop_open(0xff3, "a", 0644, 50000);
if($shm_id) {
$_gb_big5_ = shmop_read($shm_id, 0,shmop_size($shm_id)); // 讀出big5 數據
}
else{
// 創建 50000 字節的系統標識爲 0xff3 的共享內存塊
$shm_id = @shmop_open(0xff3, "c", 0644, 50000);
// 讀出數據
$fp = fopen('big5.table', 'r');
$_gb_big5_ = fread($fp, filesize('big5.table'));
fclose($fp);
if($shm_id){
$shm_bytes_written = shmop_write($shm_id, $_gb_big5_,0); // 寫入 big5 數據
}
}
ob_start('translate_gb2big5');
}
?>