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 相关文章推荐
mysql 搜索之简单应用
Apr 27 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
PHP中使用正则表达式提取中文实现笔记
Jan 20 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
May 12 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
Mar 18 PHP
php htmlentities()函数的定义和用法
May 13 PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 PHP
PHP查询分页的实现代码
Jun 09 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 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实现的RSS生成类实例
2015/04/23 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
基于Node.js的WebSocket通信实现
2017/03/11 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
微信小程序 检查接口状态实例详解
2017/06/23 Javascript
原生js实现拖拽功能基本思路详解
2018/04/18 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
angular4应用中输入的最小值和最大值的方法
2019/05/17 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
python处理cookie详解
2014/02/07 Python
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
Python API自动化框架总结
2019/11/12 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
2020/05/26 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
不假外出检讨书
2014/01/27 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
体操比赛口号
2014/06/10 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
红色故事汇观后感
2015/06/18 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python