记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

截取中英文混排字符串的函数

   效率比mb_string要高,尤其是当截取的跨度越大,和substr的效率越接近。不过我个人还是更喜欢用substr($str,$start,$len).chr(0),因为它的效率是最好的,更多时候没有必要对字符串作如此严格的截取。

public function csubstr($str,$start,$len=0){

  
$strlen=strlen($str);

  
/*默认取开始到末尾*/
  
if($len > $strlen - $start || $len <= 0)
    
$len = $strlen - $start;

  if(
$start >= $strlen)
    return
$str
  elseif(
$start < 0)
    
$start = 0;

    

  
/*计算截取字符串的开始位置*/

  
if($start > 0){
    for(
$i = 0 ; $i < $strlen ; $i++) {        
      if(
ord($str[$i])>0xa0)
        
$i++;

      if(
$i >= $start){
        
$start = $i+1;
        break;
      }
    }
  }

  
/*计算截取字符串的後束位置*/

  
if($start + $len < $strlen){
      for(
$i = 0 ; $i < $strlen ; $i++) {
      
/*如果是中文字符串,i++*/
      
if(ord($str[$i])>0xa0)
        
$i++;

      if(
$i >= $start + $len-1){
        
$len = $i - $start + 1;
        break;
      }
    }
  }
  return
substr($str,$start,$len);
}

Tags: php

« 上一篇 | 下一篇 »

只显示10条记录相关文章

PHP5.2.0正式发布 (浏览: 5069, 评论: 0)
PHP的扩展和嵌入---一本不错的书 (浏览: 42894, 评论: 0)
微软淘汰甲骨文 以1.13亿美元控股Zend (浏览: 5887, 评论: 0)
有关PHP4和PHP5不兼容的问题 (浏览: 36821, 评论: 3)
PHP6即将出炉了,看看都有什么新东西! (浏览: 2859, 评论: 0)
Minutes PHP Developers Meeting (浏览: 2884, 评论: 0)
PHP5.1终于又出来了 (浏览: 3668, 评论: 0)
Windows下的Apache+MySQL+PHP运行环境的搭建基础篇 (浏览: 4389, 评论: 1)
PHP5之__set和__get (浏览: 2752, 评论: 0)
一部经典之作《PHP 5 Power Programming》 (浏览: 34363, 评论: 2)

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

发表评论

评论内容 (必填):