PHP的中文Substring()函数

王朝php·作者佚名  2006-01-09
宽屏版  字体: |||超大  

初学PHP,Substr库函数居然会把汉字算成两个,难怪有些PHP写的程序标题从来不会自动截短,呵呵。下面我写的这个程序不算完美,但处理一般的中文(GB18030,GB2312,BIG5)是没有问题的。这个函数不适合utf-8编码的文字。

//$str字符串

//$max 最大字符数

function Substring($str,$max){

$cnt=0; //实际计数

$index=0; //当前索引

$output=''; //输出

//

while($cnt<$max && $index<strlen($str)){

$output.=$str[$index];

//big5

if(ord($str[$index])>=0x81 && ord($str[$index])<=0xfe){

if($index+1<strlen($str)){

if( (ord($str[$index+1])>=0x40 && ord($str[$index+1])<0x7e)

|| (ord($str[$index+1])>=0xa1 && ord($str[$index+1])<=0xfe) ){

$index++;

$output.=$str[$index];

}

}

}

//gb2312

else if(ord($str[$index])>=0xa1 && ord($str[$index])<=0xf7){

$output.=$str[$index];

if($index+1<strlen($str)){

if(ord($str[$index+1])>=0xa1 && ord($str[$index+1])<0xfe){

$index++;

$output.=$str[$index];

}

}

}

else{

}

$cnt++;

$index++;

}

return $output;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有