PHP輸出控制功能在簡(jiǎn)繁體轉(zhuǎn)換中的應(yīng)用(2)_PHP教程
推薦:PHP4之COOKIE支持詳解PHP4之COOKIE支持詳解 建立商業(yè)站點(diǎn)或者功能比較完善的個(gè)人站點(diǎn),常常需要記錄訪問(wèn)者的信息,在PHP中提供了兩種方便的手段:session和cookie功能.為了永久的保持用戶信息,則cookie是最便捷的手段.在這里我將為大家詳細(xì)的講解cookie的功能及使用方法. 一: 設(shè)
三 輸出控制函數(shù)在簡(jiǎn)繁體轉(zhuǎn)化中的應(yīng)用
目前的大多數(shù)網(wǎng)站的簡(jiǎn)繁體頁(yè)面轉(zhuǎn)換都是通過(guò)各自單獨(dú)的頁(yè)面實(shí)現(xiàn)的,這樣導(dǎo)致在修改簡(jiǎn)體頁(yè)面的時(shí)候還需要再次修改繁體的頁(yè)面,不能做到自動(dòng)同步。而我們提供的這個(gè)方法,可以實(shí)現(xiàn)同一個(gè)頁(yè)面自動(dòng)的變換簡(jiǎn)繁體顯示。其實(shí)現(xiàn)方法是:
1、建立簡(jiǎn)繁體標(biāo)志,用于指示當(dāng)前顯示的簡(jiǎn)繁體狀態(tài),同時(shí)對(duì)簡(jiǎn)繁體狀態(tài)進(jìn)行切換
|
以下為引用的內(nèi)容: php2000_gb_big5.php session_start(); // 打開session 功能,用于在各個(gè)頁(yè)面之間自動(dòng)傳遞標(biāo)志 if(!session_is_registered("php2000_big5")){ // 檢查簡(jiǎn)繁體標(biāo)志的注冊(cè)狀態(tài) session_register("php2000_big5"); // 注冊(cè)簡(jiǎn)繁體標(biāo)志,簡(jiǎn)體=0;繁體=1 $php2000_big5=0; // 默認(rèn)為簡(jiǎn)體 } $php2000_big5 = ($php2000_big5 1)%2; // 切換簡(jiǎn)繁體狀態(tài) header("location:".getenv("HTTP_REFERER")); // 返回其調(diào)用頁(yè)面 ?> |
2、對(duì)頁(yè)面輸出信息進(jìn)行控制,每個(gè)頁(yè)面都調(diào)用這段程序,用于簡(jiǎn)繁體轉(zhuǎn)換
require.php(應(yīng)包括前面第二部分的轉(zhuǎn)換代碼,這里略)
|
以下為引用的內(nèi)容: Session_start(); function translate_gb2big5($str) { $str = gb2big5($str); // 轉(zhuǎn)化為 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)){ // 判斷標(biāo)志 $fp = fopen('big5.table', 'r'); // big5的字庫(kù)表 $_gb_big5_ = fread($fp, filesize('big5.table')); // 讀出數(shù)據(jù) fclose($fp); ob_start('translate_gb2big5'); // 啟動(dòng)輸出信息控制 } ?> |
3、使用方法,這里給出一個(gè)最簡(jiǎn)單的例子,放在和 require.php 同一個(gè)目錄里面
|
以下為引用的內(nèi)容: test.php require("require.php"); echo "大家好,這里是 PHP 世紀(jì)網(wǎng)"; ?> if($php2000_big5==1)echo "GB"; else echo "Big5"; ?> |
第一次運(yùn)行結(jié)果為默認(rèn)簡(jiǎn)體如下:
大家好,這里是 PHP 世紀(jì)網(wǎng) Big5
點(diǎn)擊 Big5 連接顯示繁體如下
大家好,這里是 PHP 世紀(jì)網(wǎng) GB
點(diǎn)擊 GB 將返回簡(jiǎn)體頁(yè)面
由于使用了session 保存了簡(jiǎn)繁體標(biāo)志,這樣其他任何使用了 require.php 的頁(yè)面都會(huì)自動(dòng)按照當(dāng)前的標(biāo)志顯示相應(yīng)的頁(yè)面。更多的實(shí)例請(qǐng)看我的網(wǎng)站 http://www.php2000.com 。
4、big5 字庫(kù)的保存的改進(jìn)方法
曾經(jīng)考慮使用 session 來(lái)保存 big5 字庫(kù),但使用后發(fā)現(xiàn)速度明顯減慢,主要因?yàn)?session 也是通過(guò)文件形式實(shí)現(xiàn),所以不會(huì)對(duì)性能產(chǎn)生提高,而且因?yàn)閟ession 不會(huì)根據(jù)簡(jiǎn)繁體標(biāo)志自動(dòng)判斷裝載與否,所以造成在簡(jiǎn)體下也裝載了 big5 的字庫(kù),所以造成速度減慢。
由于我用的服務(wù)器為 linux 所以考慮使用共享內(nèi)存(Windows 不支持共享內(nèi)存)來(lái)保存 big5 字庫(kù)信息。其更改的代碼為require.php 的判斷部分:
|
以下為引用的內(nèi)容: if(session_is_registered("php2000_big5") && ($php2000_big5==1)) { // 修改成使用共享內(nèi)存 // 判斷是否已經(jīng)創(chuàng)建,打開50000字節(jié)的 0xff3 段的共享內(nèi)存 $shm_id = @shmop_open(0xff3, "a", 0644, 50000); if($shm_id) { $_gb_big5_ = shmop_read($shm_id, 0,shmop_size($shm_id)); // 讀出big5 數(shù)據(jù) } else{ // 創(chuàng)建 50000 字節(jié)的系統(tǒng)標(biāo)識(shí)為 0xff3 的共享內(nèi)存塊 $shm_id = @shmop_open(0xff3, "c", 0644, 50000); // 讀出數(shù)據(jù) $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 數(shù)據(jù) } } ob_start('translate_gb2big5'); } ?> |
關(guān)于共享內(nèi)存的使用方法,請(qǐng)參看有關(guān)資料。
四 結(jié)論
PHP 作為一種公開源代碼的腳本語(yǔ)言,其擴(kuò)充性是非常好的。本文只是對(duì)其一個(gè)功能的一種應(yīng)用方式的探討,并實(shí)現(xiàn)了比較完美的同一頁(yè)面自動(dòng)簡(jiǎn)繁體轉(zhuǎn)換功能。希望廣大愛(ài)好 PHP 的朋友能從中得到啟發(fā),做出更好的作品。
分享:PHP程序員不可忽略的幾點(diǎn)精華我發(fā)現(xiàn)很多的PHP程序員,尤其是學(xué)習(xí)還不是很久的,都不知道PHP的精華所在。Perl當(dāng)年如何在商界出名?其強(qiáng)大的正則表達(dá)式。而PHP呢?他是一門從Unix下發(fā)展起來(lái)的語(yǔ)言,當(dāng)然也就繼承了Perl的很多特點(diǎn),同時(shí)C的優(yōu)點(diǎn)都有�?焖�、簡(jiǎn)潔、明了,尤其是C程序員,PHP是
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁(yè)面代碼執(zhí)行時(shí)間
- PHP中獎(jiǎng)概率的抽獎(jiǎng)算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對(duì)圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問(wèn)控制的和運(yùn)算符優(yōu)先級(jí)介紹
- 關(guān)于PHP語(yǔ)言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國(guó)語(yǔ)言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說(shuō)明:
PHP教程-PHP輸出控制功能在簡(jiǎn)繁體轉(zhuǎn)換中的應(yīng)用(2)
。