日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

PHP輸出控制功能在簡繁體轉換中的應用(2)_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:PHP4之COOKIE支持詳解
PHP4之COOKIE支持詳解 建立商業(yè)站點或者功能比較完善的個人站點,常常需要記錄訪問者的信息,在PHP中提供了兩種方便的手段:session和cookie功能.為了永久的保持用戶信息,則cookie是最便捷的手段.在這里我將為大家詳細的講解cookie的功能及使用方法. 一: 設

三 輸出控制函數(shù)在簡繁體轉化中的應用

目前的大多數(shù)網(wǎng)站的簡繁體頁面轉換都是通過各自單獨的頁面實現(xiàn)的,這樣導致在修改簡體頁面的時候還需要再次修改繁體的頁面,不能做到自動同步。而我們提供的這個方法,可以實現(xiàn)同一個頁面自動的變換簡繁體顯示。其實現(xiàn)方法是:

1、建立簡繁體標志,用于指示當前顯示的簡繁體狀態(tài),同時對簡繁體狀態(tài)進行切換

以下為引用的內容:

php2000_gb_big5.php

session_start(); // 打開session 功能,用于在各個頁面之間自動傳遞標志

if(!session_is_registered("php2000_big5")){ // 檢查簡繁體標志的注冊狀態(tài)

session_register("php2000_big5"); // 注冊簡繁體標志,簡體=0;繁體=1

$php2000_big5=0; // 默認為簡體

}

$php2000_big5 = ($php2000_big5 1)%2; // 切換簡繁體狀態(tài)

header("location:".getenv("HTTP_REFERER")); // 返回其調用頁面

?>

2、對頁面輸出信息進行控制,每個頁面都調用這段程序,用于簡繁體轉換

require.php(應包括前面第二部分的轉換代碼,這里略)

以下為引用的內容:

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')); // 讀出數(shù)據(jù)

fclose($fp);

ob_start('translate_gb2big5'); // 啟動輸出信息控制

}

?>

3、使用方法,這里給出一個最簡單的例子,放在和 require.php 同一個目錄里面

以下為引用的內容:

test.php

require("require.php");

echo "大家好,這里是 PHP 世紀網(wǎng)";

?>

if($php2000_big5==1)echo "GB";

else echo "Big5";

?>

第一次運行結果為默認簡體如下:

大家好,這里是 PHP 世紀網(wǎng) Big5

點擊 Big5 連接顯示繁體如下

大家好,這里是 PHP 世紀網(wǎng) GB

點擊 GB 將返回簡體頁面

由于使用了session 保存了簡繁體標志,這樣其他任何使用了 require.php 的頁面都會自動按照當前的標志顯示相應的頁面。更多的實例請看我的網(wǎng)站 http://www.php2000.com 。

4、big5 字庫的保存的改進方法

曾經(jīng)考慮使用 session 來保存 big5 字庫,但使用后發(fā)現(xiàn)速度明顯減慢,主要因為 session 也是通過文件形式實現(xiàn),所以不會對性能產(chǎn)生提高,而且因為session 不會根據(jù)簡繁體標志自動判斷裝載與否,所以造成在簡體下也裝載了 big5 的字庫,所以造成速度減慢。

由于我用的服務器為 linux 所以考慮使用共享內存(Windows 不支持共享內存)來保存 big5 字庫信息。其更改的代碼為require.php 的判斷部分:

以下為引用的內容:

if(session_is_registered("php2000_big5") && ($php2000_big5==1))

{

// 修改成使用共享內存

// 判斷是否已經(jīng)創(chuàng)建,打開50000字節(jié)的 0xff3 段的共享內存

$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)標識為 0xff3 的共享內存塊

$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');

}

?>

關于共享內存的使用方法,請參看有關資料。

四 結論

PHP 作為一種公開源代碼的腳本語言,其擴充性是非常好的。本文只是對其一個功能的一種應用方式的探討,并實現(xiàn)了比較完美的同一頁面自動簡繁體轉換功能。希望廣大愛好 PHP 的朋友能從中得到啟發(fā),做出更好的作品。

分享:PHP程序員不可忽略的幾點精華
我發(fā)現(xiàn)很多的PHP程序員,尤其是學習還不是很久的,都不知道PHP的精華所在。Perl當年如何在商界出名?其強大的正則表達式。而PHP呢?他是一門從Unix下發(fā)展起來的語言,當然也就繼承了Perl的很多特點,同時C的優(yōu)點都有�?焖佟⒑啙�、明了,尤其是C程序員,PHP是

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:PHP教程/更新時間:2009-03-13
相關PHP教程