php中截取字符串支持utf-8


Posted in PHP onJanuary 18, 2007

截取字符串
<?php
$string="2006年4月我又长大了一岁!";
echo substr($string,1)."..."; 
 //截取字符串 
function SubstrGB($in,$num)
{
 $pos=0;
 $out="";
 while($pos<strlen($in))
 {
  $c=substr($in,$pos,1);
  if($c=="\n") break;
  if(ord($c)>128)
  {
   $out.=$c;
   $pos++;
   $c=substr($in,$pos,1);
   $out.=$c;
  }
  else
  {
   $out.=$c;
  }
  $pos++;
  if($pos>=$num) break;
 }
        return $out;

  echo SubstrGB($string,8) ;
 ?> 
<?php
/***************************************************************************
 *            cut_string.php
 *        ------------------------------
 *    Date        : Jul 16, 2005
 *    Copyright    : none
 *    Mail        : 
 *
 *    作用:截取中文字符.
 *
 *
 ***************************************************************************/
function cut_str($string, $sublen, $start = 0, $code = 'UTF-8')
{
    if($code == 'UTF-8')
    {
        $pa = "/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/";
        preg_match_all($pa, $string, $t_string);
        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
        return join('', array_slice($t_string[0], $start, $sublen));
    }
    else
    {
        $start  = $start*2;
        $sublen = $sublen*2;
        $strlen = strlen($string);
        $tmpstr = '';
        for($i=0; $i<$strlen; $i++)
        {
            if($i>=$start && $i<($start+$sublen))
            {
            if(ord(substr($string, $i, 1))>129) $tmpstr.= substr($string, $i, 2);
            else $tmpstr.= substr($string, $i, 1);
            } 
            if(ord(substr($string, $i, 1))>129) $i++;
        }
        if(strlen($tmpstr)<$strlen ) $tmpstr.= "...";
        return $tmpstr;
    }
}
    echo "<br>".cut_str($string,8,$start=0,$code='sdf') ;
?> 

PHP 相关文章推荐
JAVA/JSP学习系列之二
Oct 09 PHP
php4的彩蛋
Oct 09 PHP
WML,Apache,和 PHP 的介绍
Oct 09 PHP
php adodb介绍
Mar 19 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
分享php代码将360浏览器导出的favdb的sqlite数据库文件转换为html
Dec 09 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP让网站移动访问更加友好方法
Feb 14 PHP
Laravel实现ApiToken认证请求
Oct 14 PHP
php中的登陆login
Jan 18 #PHP
php中的时间显示
Jan 18 #PHP
解决phpmyadmin中文乱码问题。。。
Jan 18 #PHP
php批量删除数据
Jan 18 #PHP
mysql 的 like 问题,超强毕杀记!!!
Jan 18 #PHP
一个更简单的无限级分类菜单代码
Jan 16 #PHP
解决中英文字符串长度问题函数
Jan 16 #PHP
You might like
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
php操作mongoDB实例分析
2014/12/29 PHP
分享php邮件管理器源码
2016/01/06 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
Javascript 面试题随笔
2011/03/31 Javascript
基于jquery的鼠标拖动效果代码
2012/05/30 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
通过length属性判断jquery对象是否存在
2013/10/18 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
2016/12/12 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
py2exe 编译ico图标的代码
2013/03/08 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
解决Pandas的DataFrame输出截断和省略的问题
2019/02/08 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
前端canvas水印快速制作(附完整代码)
2019/09/19 HTML / CSS
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
写好自荐信的几个要点
2013/12/26 职场文书
公路绿化方案
2014/05/12 职场文书
成都人事代理协议书
2014/10/25 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
Python中for后接else的语法使用
2021/05/18 Python