php中文字符串截取多种方法汇总


Posted in PHP onOctober 06, 2016

1. 截取GB2312中文字符串

<?php
 
< ?php
//截取中文字符串
function mysubstr($str, $start, $len) {
  $tmpstr = "";
  $strlen = $start + $len;
  for($i = 0; $i < $strlen; $i++) {
    if(ord(substr($str, $i, 1)) > 0xa0) {
      $tmpstr .= substr($str, $i, 2);
      $i++;
    } else
      $tmpstr .= substr($str, $i, 1);
  }
  return $tmpstr;
}
?>

2. 截取utf8编码的多字节字符串

<?php
< ?php
//截取utf8字符串
function utf8Substr($str, $from, $len)
{
  return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
            '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
            '$1',$str);
}
?>

3. UTF-8、GB2312都支持的汉字截取函数

<?php
< ?php
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
 
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;
  }
}
 
$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312');
?>

4. BugFree 的字符截取函数

< ?php
/**
 * @package   BugFree
 * @version   $Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp $
 *
 *
 * Return part of a string(Enhance the function substr())
 *
 * @author         Chunsheng Wang <wwccss@263.net>
 * @param string $String the string to cut.
 * @param int   $Length the length of returned string.
 * @param booble $Append whether append "...": false|true
 * @return string      the cutted string.
 */
function sysSubStr($String,$Length,$Append = false)
{
  if (strlen($String) < = $Length )
  {
    return $String;
  }
  else
  {
    $I = 0;
    while ($I < $Length)
    {
      $StringTMP = substr($String,$I,1);
      if ( ord($StringTMP) >=224 )
      {
        $StringTMP = substr($String,$I,3);
        $I = $I + 3;
      }
      elseif( ord($StringTMP) >=192 )
      {
        $StringTMP = substr($String,$I,2);
        $I = $I + 2;
      }
      else
      {
        $I = $I + 1;
      }
      $StringLast[] = $StringTMP;
    }
    $StringLast = implode("",$StringLast);
    if($Append)
    {
      $StringLast .= "...";
    }
    return $StringLast;
  }
}
 
$String = "17test.info 走在中国自动化测试的前沿";
$Length = "18";
$Append = false;
echo sysSubStr($String,$Length,$Append);
?>

以上就是本文的全部内容,希望对大家有所帮助,希望大家继续关注三水点靠木的最新内容。

PHP 相关文章推荐
php 过滤危险html代码
Jun 29 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
php长字符串定义方法
Jul 12 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
discuz目录文件资料汇总
Dec 30 PHP
php将图片文件转换成二进制输出的方法
Jun 10 PHP
PHP生成及获取JSON文件的方法
Aug 23 PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 PHP
Yii2配置Nginx伪静态的方法
May 05 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 PHP
PHP array_reverse() 函数原理及实例解析
Jul 14 PHP
PHP微信红包生成代码分享
Oct 06 #PHP
php下载文件超时时间的设置方法
Oct 06 #PHP
详谈php静态方法及普通方法的区别
Oct 04 #PHP
php操作路径的经典方法(必看篇)
Oct 04 #PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 #PHP
浅谈PHP中静态方法和非静态方法的相互调用
Oct 04 #PHP
PHP图片添加水印功能示例小结
Oct 03 #PHP
You might like
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
2019/02/27 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
2010/07/17 Javascript
最短的IE判断代码
2011/03/13 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
2017/01/13 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
Python中Collection的使用小技巧
2014/08/18 Python
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
Python and、or以及and-or语法总结
2015/04/14 Python
python中assert用法实例分析
2015/04/30 Python
Python装饰器语法糖
2019/01/02 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
python 如何停止一个死循环的线程
2020/11/24 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
python装饰器代码深入讲解
2021/03/01 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
佳能法国商店:Canon法国
2019/02/14 全球购物
小孩百日宴答谢词
2014/01/15 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android