欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
PHP輸出控制功能在簡(jiǎn)繁體轉換中的應用
概要:本文對PHP的輸出控制功能進(jìn)行了簡(jiǎn)單介紹并對其在簡(jiǎn)繁體轉化中的應用給出了具體思路和實(shí)例

一 PHP 輸出控制功能介紹

PHP作為當今流行的腳本語(yǔ)言之一,具有編寫(xiě)簡(jiǎn)便,執行速度快,擴充性好等優(yōu)點(diǎn)。PHP的輸出信息控制函數可以讓你控制你的腳本輸出的內容,可以用于許多不同的情況,特別是在你的腳本已經(jīng)輸出信息后需要發(fā)送文件頭的情況以及需要對輸出信息進(jìn)行編輯處理的地方。輸出控制函數不對使用 header() 或 setcookie() 發(fā)送的文件頭信息產(chǎn)生影響,只對那些類(lèi)似于 echo()、print() 和 PHP 代碼的數據塊有作用。

例 1. 控制輸出

test.php



function test($str){

return str_replace("php2000","y10k",$str);

}

ob_start("test");

echo "hello php2000";

ob_end_flush();

?>

這個(gè)程序在沒(méi)有輸出信息控制的情況下應該輸出為

hello php2000

但通過(guò)指定了輸出控制函數后,輸出變?yōu)?

hello y10k

在上面的例子中,使用 echo() 的輸出內容將會(huì )保存在輸出緩沖區中,直到調用了 ob_end_flush()或者腳本運行終止, 然后輸出信息由自定義的處理函數進(jìn)行處理(替換里面的字符串)并返回結果。

相關(guān)函數說(shuō)明

ob_start([string output_callback])- 打開(kāi)輸出緩沖區

所有的輸出信息不在直接發(fā)送到瀏覽器,而是保存在輸出緩沖區里面,可選得回調函數用于處理輸出結果信息。

ob_end_flush - 結束(發(fā)送)輸出緩沖區的內容,關(guān)閉輸出緩沖區

二 簡(jiǎn)繁體轉換的實(shí)現

一般通過(guò)對照表的形式實(shí)現,相關(guān)的文章非常多,這里就不多講了,只給出其實(shí)現代碼



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;

}

?>

其中:

$gb_big5_ 保存著(zhù)big5 的字庫對照表

$str 為要轉化的字符串

三 輸出控制函數在簡(jiǎn)繁體轉化中的應用

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

1 建立簡(jiǎn)繁體標志,用于指示當前顯示的簡(jiǎn)繁體狀態(tài),同時(shí)對簡(jiǎn)繁體狀態(tài)進(jìn)行切換

php2000_gb_big5.php



session_start(); // 打開(kāi)session 功能,用于在各個(gè)頁(yè)面之間自動(dòng)傳遞標志

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

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

$php2000_big5=0; // 默認為簡(jiǎn)體

}

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

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

?>

2對頁(yè)面輸出信息進(jìn)行控制,每個(gè)頁(yè)面都調用這段程序,用于簡(jiǎn)繁體轉換

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



Session_start();

function translate_gb2big5($str) {

$str = gb2big5($str); // 轉化為 big5

$str = str_replace(‘charset=gb2312‘, ‘charset=big5‘, $str); // 替換字符類(lèi)型

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‘); // 啟動(dòng)輸出信息控制

}

?>

3 使用方法,這里給出一個(gè)最簡(jiǎn)單的例子,放在和 require.php 同一個(gè)目錄里面

test.php



require("require.php");

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

?>





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

else echo "Big5";

?>



第一次運行結果為默認簡(jiǎn)體如下

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

點(diǎn)擊 Big5 連接顯示繁體如下

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

點(diǎn)擊 GB 將返回簡(jiǎn)體頁(yè)面

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

4 big5 字庫的保存的改進(jìn)方法

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

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



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

{

// 修改成使用共享內存

// 判斷是否已經(jīng)創(chuàng )建,打開(kāi)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{

// 創(chuàng )建 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); // 寫(xiě)入 big5 數據

}

}

ob_start(‘translate_gb2big5‘);

}

?>

關(guān)于共享內存的使用方法,請參看有關(guān)資料。

四 結論

PHP 作為一種公開(kāi)源代碼的腳本語(yǔ)言,其擴充性是非常好的。本文只是對其一個(gè)功能的一種應用方式的探討,并實(shí)現了比較完美的同一頁(yè)面自動(dòng)簡(jiǎn)繁體轉換功能。希望廣大愛(ài)好 PHP 的朋友能從中得到啟發(fā),做出更好的作品。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
php繁體轉換簡(jiǎn)體的函數
[驗證碼]PHP生成圖片驗證碼
巧用linux服務(wù)器下的/dev/shm/,避開(kāi)磁盤(pán)IO不給力!
PHP屏蔽所有頁(yè)面錯誤輸出
關(guān)于PHP你可能不知道的-PHP的事件驅動(dòng)化設計 | 風(fēng)雪之隅
ajax 實(shí)現加載頁(yè)面、刪除、查看詳細信息,以及bootstrap網(wǎng)頁(yè)的美化
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久