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 相关文章推荐
PHP5中的时间相差8小时的解决办法
Mar 28 PHP
php 随机生成10位字符代码
Mar 26 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
PHP的基本常识小结
Jul 05 PHP
PHP临时文件的安全性分析
Jul 04 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
在TP5数据库中四个字段实现无限分类的示例
Oct 18 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
PHP数组与字符串互相转换实例
May 05 PHP
Git命令之分支详解
Mar 02 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+javascript液晶时钟
2006/10/09 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
2020/05/02 PHP
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
Node.js DES加密的简单实现
2016/07/07 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
Python使用当前时间、随机数产生一个唯一数字的方法
2017/09/18 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
DataFrame中的object转换成float的方法
2018/04/10 Python
Python3实现定时任务的四种方式
2019/06/03 Python
python 列表输出重复值以及对应的角标方法
2019/06/11 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
Bobbi Brown芭比波朗美国官网:化妆师专业彩妆保养品品牌
2016/08/18 全球购物
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
党校学习自我鉴定
2014/02/24 职场文书
丧事主持词大全
2014/04/02 职场文书
表扬稿范文
2015/01/17 职场文书
工程部主管岗位职责
2015/02/12 职场文书
演讲比赛主持词
2015/06/29 职场文书
Golang获取List列表元素的四种方式
2022/04/20 Golang