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中比较简单的导入phpmyadmin生成的sql文件的方法
Jun 28 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
php实现图片缩放功能类
Dec 18 PHP
php数组编码转换示例详解
Mar 11 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
深入剖析PHP中printf()函数格式化使用
May 23 PHP
PHP 等比例缩放图片详解及实例代码
Sep 18 PHP
利用PHP访问带有密码的Redis方法示例
Feb 09 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
Mar 15 PHP
CI框架附属类用法分析
Dec 26 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判断表单复选框选中状态完整例子
2014/06/24 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
使用js显示当前时间示例
2014/03/02 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
JS简单实现禁止访问某个页面的方法
2016/09/13 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
拖动时防止选中
2017/02/03 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
把项目从Python2.x移植到Python3.x的经验总结
2015/04/20 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python 带时区的日期格式化操作
2020/10/23 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
经典优秀个人求职信分享
2013/12/12 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
减负增效提质方案
2014/05/23 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android