|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉。 综述:有很多伴侣对网站供应繁、简两种版本感应很猜疑,是怎样完成的呢?这也是时下浩瀚PHP书本中被漏失落的一个很主要的常识点。笔者汇集收拾整顿并依据本人的开辟经历将一些重点与疑点枚举出来与人人同享! 若何使用繁体中文转换为简体中文的PHP函数?
咱们界说一个big5togb的函数来完成这个转换:
function big5togb($code)
{
//参数$code是big5码的字符串
include "data_big5.php"; //包括big5数据的文件
$output="";
$length=strlen($code); //获得字符串长度
$code=strtok($code,"");
$idx=0;
while ($idx < $length)
{
$tmpStr=$code[$idx].$code[$idx+1];
if (isbig5($tmpStr)) //判别是不是big5码
{
……//假如是big5码则停止转换后输入
}
else
{
$output.= $code[$idx]; //假如不是big5码则直接输入
}
$idx++;
}
return ($output);
}
若何使用简体中文转换为繁体中文的PHP函数?
若何用PHP将简体中文转换为繁体中文?
咱们界说一个big5togb的函数来完成这个转换:
function gbtobig5($code)
{
include "data_gb.php"; //包括有gb码的数据文件
$output="";
$length=strlen($code);
$code=strtok($code,"");
$idx=0;
while ($idx < $length)
{
$tmpStr=$code[$idx].$code[$idx+1];
if (isgb($tmpStr)) //判别是不是gb码
{
……//假如是gb码转换后输入
}
else
{
$output.= $code[$idx]; //不是gb码则直接输入
}
$idx++;
}
return ($output);
}
在简繁体转换中如何使用PHP输入掌握功效?
PHP输入掌握功效是如何一回事?
PHP的输入信息掌握函数可让你掌握你的剧本输入的内容,可以用于很多分歧的情形,出格是在你的剧本已输入信息后需求发送文件头的情形和需求对输入信息停止编纂处置的中央。输入掌握函数不合错误利用header()或setcookie()发送的文件头信息发生影响,只对那些相似于echo()、print() 和 PHP 代码的数据块有感化。
例 1. 掌握输入
test.php
<?
function test($str){
return str_replace("world","php",$str);
}
ob_start("test");
echo "hello world";
ob_end_flush();
?>
这个法式在没有输入信息掌握的情形下应当输入为
hello world
但经由过程指定了输入掌握函数后,输入变成
hello php
在下面的例子中,利用echo()的输入内容将会保留在输入缓冲区中,直到挪用了ob_end_flush()或剧本运转终止,然后输入信息由自界说的处置函数停止处置(交换外面的字符串)并前往了局。
相干函数申明:
void ob_start([string output_callback])- 翻开输入缓冲区
一切的输入信息不在直接发送到阅读器,而是保留在输入缓冲区外面,可选得回调函数用于处置输入了局信息。
void ob_end_flush(void) - 停止(发送)输入缓冲区的内容,封闭输入缓冲区
简繁体转换若何完成?
简繁转换普通经由过程对比表的模式完成,咱们这里只给出其完成代码个中:
<?php
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 为要转化的字符串
4 big5 字库的保留的改善办法
可使用 session 来保留 big5 字库,但利用后速度会分明减慢,次要由于 session 也是经由过程文件模式完成,所以不会对功能发生进步,并且由于session 不会依据简繁体标记主动判别装载与否,所以形成在简体下也装载了 big5 的字库,所以形成速度减慢。
假如办事器为 linux 可以思索利用同享内存来保留 big5 字库信息。其更改的代码为require.php 的判别局部:
<?
if(session_is_registered("big5") && ($big5==1))
{
// 修正成利用同享内存
// 判别是不是已创立,翻开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');
}
?>
若何分离全角和半角以免乱码?
咱们可以写如许一个函数来完成:
function ChgTitle($title)
{
$length = 46; //咱们答应字符串显示的最大长度
if (strlen($title)>$length) {
$temp = 0;
for($i=0; $i<$length; $i++)
if (ord($title[$i]) > 128) $temp++;
if ($temp%2 == 0)
$title = substr($title,0,$length)."...";
else
$title = substr($title,0,$length+1)."...";
}
return $title;
}
这个函数道理就是截断一个字符,看看其ascII码是否是大于128,假如是,申明截断的是一个全角汉字,那末就退后一个截断。用$length掌握长度
备注:轮回判别字符串外面的 >128 的字符个数,假如半角字符为偶数,则暗示地位恰好为全部汉字,假如为奇数,则为半个汉字,需求取下一个字符
最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。 |
|