¸ÅÒª£º±¾ÎĶÔPHPµÄÊa³o¿ØÖƹ¦ÄܽøÐÐÁ˼oµ¥½eÉܲ¢¶ÔÆaÔÚ¼o±Ìaת»¯ÖеÄÓ¦Óøø³oÁ˾ßÌa˼ºÍʵÀý
Ò» PHP Êa³o¿ØÖƹ¦ÄܽeÉÜ
PHP×÷Ϊµ±½ñÁ÷ÐеĽű¾ÓiÑÔÖ®Ò»£¬¾ßÓбaд¼o±a£¬Ö´ÐÐËٶȿi£¬À(C)³aÐԺõÈÓŵa¡£PHPµÄÊa³oÐÅÏ¢¿ØÖƺ¯Êý¿ÉÒÔÈÃÄa¿ØÖÆÄaµÄ½Å±¾Êa³oµÄÄÚÈÝ£¬¿ÉÒÔÓÃÓÚÐi¶a²»Í¬µÄÇe¿o£¬ÌرðÊÇÔÚÄaµÄ½Å±¾ÒѾÊa³oÐÅÏ¢ºoÐeÒª¢ËÍÎļþ͵ÄÇe¿oÒÔ¼°ÐeÒª¶ÔÊa³oÐÅÏ¢½øÐбa¼´¦ÀiµÄµØ½¡£Êa³o¿ØÖƺ¯Êý²»¶ÔʹÓà header() »o setcookie() ¢Ë͵ÄÎļþÍÐÅÏ¢²uÉuÓ°Ïi£¬Ö»¶ÔÄÇÐ(C)ÀaËÆÓÚ echo()¡¢print() ºÍ PHP ´uÂeµÄÊý¾Ý¿eÓÐ×÷Óá£
Àý 1. ¿ØÖÆÊa³o
test.php
<?
function test($str){
return str_replace("php2000","y10k",$str);
}
ob_start("test");
echo "hello php2000";
ob_end_flush();
?>
Õa¸o³ÌÐoÔÚûÓÐÊa³oÐÅÏ¢¿ØÖƵÄÇe¿oÏÂÓ¦¸ÃÊa³oΪ
hello php2000
µ«Í¨¹ýÖ¸¶¨ÁËÊa³o¿ØÖƺ¯Êýºo£¬Êa³o±aΪ
hello y10k
ÔÚÉÏÃaeµÄÀý×ÓÖУ¬Ê¹Óà echo() µÄÊa³oÄÚÈݽ«»a±£´aeÔÚÊa³o»º³aÇøÖУ¬Ö±µ½µ÷ÓÃÁË ob_end_flush()»oÕ߽ű¾ÔËÐÐÖÕÖ¹£¬ È»ºoÊa³oÐÅÏ¢ÓÉ×Ô¶¨ÒaµÄ´¦Àiº¯Êý½øÐд¦Ài£¨Ìae»»ÀiÃaeµÄ×Öu´®£(C)²¢*µ»Ø½a¹u¡£
Ïa¹Øº¯Êý˵Ã÷
ob_start£¨[string output_callback]£(C)- ´o¿ªÊa³o»º³aÇø
ËuÓеÄÊa³oÐÅÏ¢²»ÔÚÖ±½Ó¢Ë͵½a¯ÀÀÆ÷£¬¶øÊDZ£´aeÔÚÊa³o»º³aÇøÀiÃae,¿ÉÑ¡µÃ»Øµ÷º¯ÊýÓÃÓÚ´¦ÀiÊa³o½a¹uÐÅÏ¢¡£
ob_end_flush - ½aÊø£¨¢ËÍ£(C)Êa³o»º³aÇøµÄÄÚÈÝ£¬¹Ø±ÕÊa³o»º³aÇø
¶þ ¼o±Ìaת»»µÄʵÏÖ
Ò»°aͨ¹ý¶ÔÕÕ±iµÄÐÎʽʵÏÖ£¬Ïa¹ØµÄÎÄÕÂdz£¶a£¬ÕaÀi¾Í²»¶a½²ÁË£¬Ö»¸ø³oÆaʵÏÖ´uÂe
<?
function gb2big5($str) {
global $_gbbig5;
$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($_gbbig5, ($h-160)510+($l-1)2, 2);
$str[$i] = $gb[0];
$str[$i+1] = $gb[1];
$i++;
}
}
return $str;
}
?>
ÆaÖУº
$gbbig5 ±£´ae×Åbig5 µÄ×Ö¿a¶ÔÕÕ±i
$str ΪҪת»¯µÄ×Öu´®
Èý Êa³o¿ØÖƺ¯ÊýÔÚ¼o±Ìaת»¯ÖеÄÓ¦ÓÃ
Ä¿Ç°µÄ´o¶aÊýÍøÕ¾µÄ¼o±ÌaÒ³Ãaeת»»¶¼ÊÇͨ¹ý¸÷×Ôµ¥¶ÀµÄÒ³ÃaeʵÏֵģ¬ÕaÑuµ¼ÖÂÔÚÐ޸ļoÌaÒ³ÃaeµÄʱºo»¹ÐeÒªÔÙ´ÎÐ޸ıÌaµÄÒ³Ãae£¬²»ÄÜ×oµ½×Ô¶¯Í¬²½¡£¶øÎÒÃÇÌa¹(C)µÄÕa¸o½¨£¬¿ÉÒÔʵÏÖͬһ¸oÒ³Ãae×Ô¶¯µÄ±a»»¼o±ÌaÏÔʾ¡£ÆaʵÏÖ½¨ÊÇ£º
1 ½¨Á¢¼o±Ìa±eÖ¾£¬ÓÃÓÚָʾµ±Ç°ÏÔʾµÄ¼o±Ìa״̬£¬Í¬Ê±¶Ô¼o±Ìa״̬½øÐÐÇл»
php2000_gb_big5.php
<?
session_start(); // ´o¿ªsession ¹¦ÄÜ£¬ÓÃÓÚÔÚ¸÷¸oÒ³ÃaeÖ®¼a×Ô¶¯´«µÝ±eÖ¾
if(!session_is_registered("php2000_big5")){ // ¼i²e¼o±Ìa±eÖ¾µÄ×¢²a״̬
session_register("php2000_big5"); // ×¢²a¼o±Ìa±eÖ¾£¬¼oÌa=0£»±Ìa=1
$php2000_big5=0; // ĬÈÏΪ¼oÌa
}
$php2000_big5 = ($php2000_big5+1)%2; // Çл»¼o±Ìa״̬
header("location:".getenv("HTTP_REFERER")); // µ»ØÆaµ÷ÓÃÒ³Ãae
?>
2¶ÔÒ³ÃaeÊa³oÐÅÏ¢½øÐпØÖÆ£¬Ã¿¸oÒ³Ãae¶¼µ÷ÓÃÕa¶Î³ÌÐo£¬ÓÃÓÚ¼o±Ìaת»»
require.php£¨Ó¦°uÀ¨Ç°ÃaeµÚ¶þ²¿ÖµÄת»»´uÂe£¬ÕaÀiÂÔ£(C)
<?
Session_start();
function translate_gb2big5($str) {
$str = gb2big5($str); // ת»¯Îª big5
$str = str_replace('charset=gb2312', 'charset=big5', $str); // Ìae»»×ÖuÀaÐÍ
header('Content-Type: text/html; charset=big5'); // ±ÌaÎļþÍ
return $str;
}
if(session_is_registered("php2000_big5") && ($php2000_big5==1)){ // ÅжϱeÖ¾
$fp = fopen('big5.table', 'r'); // big5µÄ×Ö¿a±i
$_gbbig5 = fread($fp, filesize('big5.table')); // ¶Á³oÊý¾Ý
fclose($fp);
ob_start('translate_gb2big5'); // Æo¶¯Êa³oÐÅÏ¢¿ØÖÆ
}
?>
3 ʹÓý¨£¬ÕaÀi¸ø³oÒ»¸o×i¼oµ¥µÄÀý×Ó£¬ÅÔÚºÍ require.php ͬһ¸oĿ¼ÀiÃae
test.php
<?
require("require.php");
echo "´o¼ÒºÃ£¬ÕaÀiÊÇ PHP ÊÀ¼ÍÍø";
?>
<?
if($php2000_big5==1)echo "GB";
else echo "Big5";
?>
µÚÒ»´ÎÔËÐнa¹uΪĬÈϼoÌaÈçÏÂ
´o¼ÒºÃ£¬ÕaÀiÊÇ PHP ÊÀ¼ÍÍø Big5
µa»÷ Big5 Á¬½ÓÏÔʾ±ÌaÈçÏÂ
´o¼ÒºÃ£¬ß@ÀiÊÇ PHP ÊÀ¼o¾W GB
µa»÷ GB ½«µ»Ø¼oÌaÒ³Ãae
ÓÉÓÚʹÓÃÁËsession ±£´aeÁ˼o±Ìa±eÖ¾£¬ÕaÑuÆaËuÈκÎʹÓÃÁË require.php µÄÒ³Ãae¶¼»a×Ô¶¯°´ÕÕµ±Ç°µÄ±eÖ¾ÏÔʾÏaÓ¦µÄÒ³Ãae¡£¸u¶aµÄʵÀýÇe¿´ÎÒµÄÍøÕ¾ http://www.php2000.com¡£
4 big5 ×Ö¿aµÄ±£´aeµÄ¸Ä½ø½¨
Ôø¾¿¼ÂÇʹÓà session À´±£´ae big5 ×Ö¿a£¬µ«Ê¹Óúo¢ÏÖËÙ¶ÈÃ÷ÏÔ¼oÂý£¬Ö÷ÒªÒoΪ session Ò²ÊÇͨ¹ýÎļþÐÎʽʵÏÖ£¬ËuÒÔ²»»a¶ÔÐÔÄܲuÉuÌa¸ß£¬¶øÇÒÒoΪsession ²»»a¸u¾Ý¼o±Ìa±eÖ¾×Ô¶¯ÅжÏ×°ÔØÓeñ£¬ËuÒÔÔi³ÉÔÚ¼oÌaÏÂÒ²×°ÔØÁË big5 µÄ×Ö¿a£¬ËuÒÔÔi³ÉËٶȼoÂý¡£
ÓÉÓÚÎÒÓõÄþÎñÆ÷Ϊ linux ËuÒÔ¿¼ÂÇʹÓù²ÏiÄÚ´ae£¨Windows ²»Ö§³Ö¹²ÏiÄÚ´ae£(C)À´±£´ae big5 ×Ö¿aÐÅÏ¢¡£Æa¸u¸ÄµÄ´uÂeΪrequire.php µÄÅжϲ¿Ö£º
<?
if(session_is_registered("php2000_big5") && ($php2000_big5==1))
{
// Ð޸ijÉʹÓù²ÏiÄÚ´ae
// ÅжÏÊÇñÒѾ´´½¨,´o¿ª50000×Ö½ÚµÄ 0xff3 ¶ÎµÄ¹²ÏiÄÚ´ae
$shm_id = @shmop_open(0xff3, "a", 0644, 50000);
if($shm_id) {
$_gbbig5 = shmop_read($shm_id, 0,shmop_size($shm_id)); // ¶Á³obig5 Êý¾Ý
}
else{
// ´´½¨ 50000 ×Ö½ÚµÄϵͳ±eʶΪ 0xff3 µÄ¹²ÏiÄÚ´ae¿e
$shm_id = @shmop_open(0xff3, "c", 0644, 50000);
// ¶Á³oÊý¾Ý
$fp = fopen('big5.table', 'r');
$_gbbig5 = fread($fp, filesize('big5.table'));
fclose($fp);
if($shm_id){
$shm_bytes_written = shmop_write($shm_id, $_gbbig5,0); // дÈe big5 Êý¾Ý
}
}
ob_start('translate_gb2big5');
}
?>
¹ØÓÚ¹²ÏiÄÚ´aeµÄʹÓý¨£¬Çe²Î¿´ÓйØ×ÊÁÏ¡£
ËÄ ½aÂÛ
PHP ×÷ΪһÖÖ¹«¿ªÔ´´uÂeµÄ½Å±¾ÓiÑÔ£¬ÆaÀ(C)³aÐÔÊÇdz£ºÃµÄ¡£±¾ÎÄÖ»ÊǶÔÆaÒ»¸o¹¦ÄܵÄÒ»ÖÖÓ¦ÓýʽµÄ̽ÌÖ£¬²¢ÊµÏÖÁ˱ȽÏÍeÃÀµÄͬһҳÃae×Ô¶¯¼o±Ìaת»»¹¦ÄÜ¡£Ï£Íu¹a´o°®ºÃ PHP µÄÅoÓÑÄÜ´ÓÖеõ½Æo¢£¬×o³o¸uºÃµÄ×÷Æ*¡£