PHP教程:strlen与mb_strlen字符串长度函数_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP教程:strlen与mb_strlen字符串长度函数

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:长度函数字符串教程
黑客防线网安网讯:  懂PHP的都知道strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。    先看这样一段代码吧(先决条件是:字符编码为UTF-8):...
  懂PHP的都知道strlen与mb_strlen是求字符串长度的函数但是对于一些初学者来说如果不看手册,也许不太清楚其中的区别
  
  先看这样一段代码吧(先决条件是:字符编码为UTF-8):
  
  <?
  
  $str='懂PHP的都知道strlen与mb_strlen是求字符串长度的函数';
  
  echostrlen($str)'.<br/>'.mb_strlen($str,'utf-8');
  
  ?>
  
  运行上述代码,返回值如下:
  
  66
  
  34
  
  怎么样?strlen中,中文是三个字节的长度,英文则是一个字节的长度!mb_strlen中,都被计算为一字节的长度!所以,我们有时候用substr来截取UTF-8中文字符串的时候,经常会出现乱码,就是这个原因了!
  
  下面提供一个截取UTF-8字符串的函数:
  
  functioncutstr($sourcestr,$cutlength){
  
  $returnstr='';
  
  $i=0;
  
  $n=0;
  
  $str_length=strlen($sourcestr);
  
  $mb_str_length=mb_strlen($sourcestr,'utf-8');
  
  while(($n<$cutlength)&&($i<=$str_length)){
  
  $temp_str=substr($sourcestr,$i,1);
  
  $ascnum=ord($temp_str);
  
  if($ascnum>=224){
  
  $returnstr=$returnstr.substr($sourcestr,$i,3);
  
  $i=$i+3;
  
  $n++;
  
  }
  
  elseif($ascnum>=192){
  
  $returnstr=$returnstr.substr($sourcestr,$i,2);
  
  $i=$i+2;
  
  $n++;
  
  }
  
  elseif(($ascnum>=65)&&($ascnum<=90)){
  
  $returnstr=$returnstr.substr($sourcestr,$i,1);
  
  $i=$i+1;
  
  $n++;
  
  }
  
  else{
  
  $returnstr=$returnstr.substr($sourcestr,$i,1);
  
  $i=$i+1;
  
  $n=$n+0.5;
  
  }
  
  }
  
  if($mb_str_length>$cutlength){
  
  $returnstr=$returnstr."...";
  
  }
  
  return$returnstr;
  
  }
  
  使用例子:
  
  <?
  
  $str='有效期最长三个月,超过有效期系统将自动删除本条信息';
  
  //echostrlen($str);
  
  //echo'<hr/>'.mb_strlen($str,'utf-8');
  
  echo'<hr/>'.$str;
  
  echo'<hr/>'.cutstr($str,24);
  
  ?>
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17549-1.html
网站维护教程更新时间:2012-09-21 05:21:02  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer