亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

PHP輸出控制功能在簡繁體轉(zhuǎn)換中的應用

瀏覽:63日期:2023-12-22 15:47:05
概要:本文對PHP的輸出控制功能進行了簡單介紹并對其在簡繁體轉(zhuǎn)化中的應用給出了具體思路和實例一 PHP 輸出控制功能介紹PHP作為當今流行的腳本語言之一,具有編寫簡便,執(zhí)行速度快,擴充性好等優(yōu)點。PHP的輸出信息控制函數(shù)可以讓你控制你的腳本輸出的內(nèi)容,可以用于許多不同的情況,特別是在你的腳本已經(jīng)輸出信息后需要發(fā)送文件頭的情況以及需要對輸出信息進行編輯處理的地方。輸出控制函數(shù)不對使用 header() 或 setcookie() 發(fā)送的文件頭信息產(chǎn)生影響,只對那些類似于 echo()、print() 和 PHP 代碼的數(shù)據(jù)塊有作用。 例 1. 控制輸出 test.php<?function test($str){return str_replace("php2000","y10k",$str);}ob_start("test");echo "hello php2000";ob_end_flush();?> 這個程序在沒有輸出信息控制的情況下應該輸出為hello php2000但通過指定了輸出控制函數(shù)后,輸出變?yōu)閔ello y10k在上面的例子中,使用 echo() 的輸出內(nèi)容將會保存在輸出緩沖區(qū)中,直到調(diào)用了 ob_end_flush()或者腳本運行終止, 然后輸出信息由自定義的處理函數(shù)進行處理(替換里面的字符串)并返回結(jié)果。相關函數(shù)說明 ob_start([string output_callback])- 打開輸出緩沖區(qū) 所有的輸出信息不在直接發(fā)送到瀏覽器,而是保存在輸出緩沖區(qū)里面,可選得回調(diào)函數(shù)用于處理輸出結(jié)果信息。 ob_end_flush - 結(jié)束(發(fā)送)輸出緩沖區(qū)的內(nèi)容,關閉輸出緩沖區(qū) 二 簡繁體轉(zhuǎn)換的實現(xiàn)一般通過對照表的形式實現(xiàn),相關的文章非常多,這里就不多講了,只給出其實現(xiàn)代碼<?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_ 保存著big5 的字庫對照表$str 為要轉(zhuǎn)化的字符串三 輸出控制函數(shù)在簡繁體轉(zhuǎn)化中的應用目前的大多數(shù)網(wǎng)站的簡繁體頁面轉(zhuǎn)換都是通過各自單獨的頁面實現(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")); // 返回其調(diào)用頁面?>2對頁面輸出信息進行控制,每個頁面都調(diào)用這段程序,用于簡繁體轉(zhuǎn)換require.php(應包括前面第二部分的轉(zhuǎn)換代碼,這里略)<?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)){ // 判斷標志$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)";?> <a href=php2000_gb_big5.php><?if($php2000_big5==1)echo "GB";else echo "Big5";?></a>第一次運行結(jié)果為默認簡體如下大家好,這里是 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 所以考慮使用共享內(nèi)存(Windows 不支持共享內(nèi)存)來保存 big5 字庫信息。其更改的代碼為require.php 的判斷部分:<?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)標識為 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');}?>關于共享內(nèi)存的使用方法,請參看有關資料。四 結(jié)論PHP 作為一種公開源代碼的腳本語言,其擴充性是非常好的。本文只是對其一個功能的一種應用方式的探討,并實現(xiàn)了比較完美的同一頁面自動簡繁體轉(zhuǎn)換功能。希望廣大愛好 PHP 的朋友能從中得到啟發(fā),做出更好的作品。;
標簽: PHP
主站蜘蛛池模板: a级片免费在线观看 | 欧乱色国产精品兔费视频 | 欧美三级在线播放 | 日韩在线一区二区三区免费视频 | 久久一区二区三区99 | 最新在线观看精品国产福利片 | 69日影院 | 澳门久久| 91日韩视频| 国内精品一区二区三区东京 | 日韩欧美综合视频 | 香蕉视频入口 | 欧美日韩亚洲国产精品一区二区 | 国产成人精品一区 | 欧美成人免费在线观看 | 222aaa免费 | 免费国产精品视频 | 热99re久久精品2久久久 | 国产精品国内免费一区二区三区 | 91精品免费久久久久久久久 | 国产精品自拍一区 | 1024在线视频国产在线播放 | 黄色大片免费在线观看 | 国产欧美在线观看视频 | 高清国产美女一级a毛片在线 | 日韩毛片免费 | 久草国产精品视频 | 成年男女免费视频观看性 | 94在线成人免费视频 | 啪啪啪毛片 | 天天综合天天影视色香欲俱全 | 外国一级黄色片 | 久久婷婷在线 | 国产成人精品免费视频大全软件 | 国产黄色免费网站 | 亚洲精品国产国语 | 一a一级片 | 精品一区二区免费视频 | 最新国产在线观看 | 欧美 日韩 亚洲另类专区 | 人碰人人 |