网站建设及托管合同,wordpress数据库加密方式,榆林百度seo,广告设计专业介绍概要#xff1a;本文对PHP的输出控制功能进行了简单介绍并对其在简繁体转化中的应用给出了具体思路和实例一 PHP 输出控制功能介绍PHP作为当今流行的脚本语言之一#xff0c;具有编写简便#xff0c;执行速度快#xff0c;扩充性好等优点。PHP的输出信息控制函数可以让你控…概要本文对PHP的输出控制功能进行了简单介绍并对其在简繁体转化中的应用给出了具体思路和实例一 PHP 输出控制功能介绍PHP作为当今流行的脚本语言之一具有编写简便执行速度快扩充性好等优点。PHP的输出信息控制函数可以让你控制你的脚本输出的内容可以用于许多不同的情况特别是在你的脚本已经输出信息后需要发送文件头的情况以及需要对输出信息进行编辑处理的地方。输出控制函数不对使用 header() 或 setcookie() 发送的文件头信息产生影响只对那些类似于 echo()、print() 和 PHP 代码的数据块有作用。例 1. 控制输出test.phpfunction test($str){return str_replace(php2000,y10k,$str);}ob_start(test);echo hello php2000;ob_end_flush();?这个程序在没有输出信息控制的情况下应该输出为hello php2000但通过指定了输出控制函数后输出变为hello y10k在上面的例子中使用 echo() 的输出内容将会保存在输出缓冲区中直到调用了 ob_end_flush()或者脚本运行终止 然后输出信息由自定义的处理函数进行处理(替换里面的字符串)并返回结果。相关函数说明ob_start([string output_callback])- 打开输出缓冲区所有的输出信息不在直接发送到浏览器而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。ob_end_flush - 结束(发送)输出缓冲区的内容关闭输出缓冲区二 简繁体转换的实现一般通过对照表的形式实现相关的文章非常多这里就不多讲了只给出其实现代码function gb2big5($str) {global $_gb_big5_;$leng strlen($str)-1;for($i 0; $i$h ord($str[$i]);if($h160){$l ord($str[$i1]);$gb($h161 $l64)? : substr($_gb_big5_, ($h-160)*510($l-1)*2, 2);$str[$i] $gb[0];$str[$i1] $gb[1];$i;}}return $str;}?其中$gb_big5_ 保存着big5 的字库对照表$str 为要转化的字符串三 输出控制函数在简繁体转化中的应用目前的大多数网站的简繁体页面转换都是通过各自单独的页面实现的这样导致在修改简体页面的时候还需要再次修改繁体的页面不能做到自动同步。而我们提供的这个方法可以实现同一个页面自动的变换简繁体显示。其实现方法是1 建立简繁体标志用于指示当前显示的简繁体状态同时对简繁体状态进行切换php2000_gb_big5.phpsession_start(); // 打开session 功能用于在各个页面之间自动传递标志if(!session_is_registered(php2000_big5)){ // 检查简繁体标志的注册状态session_register(php2000_big5); // 注册简繁体标志简体0繁体1$php2000_big50; // 默认为简体}$php2000_big5 ($php2000_big51)%2; // 切换简繁体状态header(location:.getenv(HTTP_REFERER)); // 返回其调用页面?2对页面输出信息进行控制每个页面都调用这段程序用于简繁体转换require.php(应包括前面第二部分的转换代码这里略)Session_start();function translate_gb2big5($str) {$str gb2big5($str); // 转化为 big5$str str_replace(charsetgb2312, charsetbig5, $str); // 替换字符类型header(Content-Type: text/html; charsetbig5); // 繁体文件头return $str;}if(session_is_registered(php2000_big5) ($php2000_big51)){ // 判断标志$fp fopen(big5.table, r); // big5的字库表$_gb_big5_ fread($fp, filesize(big5.table)); // 读出数据fclose($fp);ob_start(translate_gb2big5); // 启动输出信息控制}?3 使用方法这里给出一个最简单的例子放在和 require.php 同一个目录里面test.phprequire(require.php);echo 大家好这里是 PHP 世纪网;?if($php2000_big51)echo GB;else echo Big5;?第一次运行结果为默认简体如下大家好这里是 PHP 世纪网 Big5点击 Big5 连接显示繁体如下大家好這里是 PHP 世紀網 GB点击 GB 将返回简体页面由于使用了session 保存了简繁体标志这样其他任何使用了 require.php 的页面都会自动按照当前的标志显示相应的页面。更多的实例请看我的网站 http://www.php2000.com。4 big5 字库的保存的改进方法曾经考虑使用 session 来保存 big5 字库但使用后发现速度明显减慢主要因为 session 也是通过文件形式实现所以不会对性能产生提高而且因为session 不会根据简繁体标志自动判断装载与否所以造成在简体下也装载了 big5 的字库所以造成速度减慢。由于我用的服务器为 linux 所以考虑使用共享内存(Windows 不支持共享内存)来保存 big5 字库信息。其更改的代码为require.php 的判断部分if(session_is_registered(php2000_big5) ($php2000_big51)){// 修改成使用共享内存// 判断是否已经创建,打开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{// 创建 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); // 写入 big5 数据}}ob_start(translate_gb2big5);}?关于共享内存的使用方法请参看有关资料。四 结论PHP 作为一种公开源代码的脚本语言其扩充性是非常好的。本文只是对其一个功能的一种应用方式的探讨并实现了比较完美的同一页面自动简繁体转换功能。希望广大爱好 PHP 的朋友能从中得到启发做出更好的作品。