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制作的意见反馈表源码
Mar 11 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
Feb 16 PHP
选择PHP作为网站开发语言的原因分享
Jan 03 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
May 06 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
php数组比较实现查找连续数的方法
Jul 29 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
php中array_column函数简单实现方法
Jul 11 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 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导出中文内容excel文件类实例
2015/07/06 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
laravel5.4生成验证码的实例讲解
2017/08/05 PHP
php实现分页功能的详细实例方法
2019/09/29 PHP
js里的prototype使用示例
2010/11/19 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
JS算法题之查找数字在数组中的索引位置
2019/05/15 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
举例讲解Python中装饰器的用法
2015/04/27 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
VSCode下好用的Python插件及配置
2018/04/06 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
HTML5离线应用与客户端存储的实现
2018/05/03 HTML / CSS
俄罗斯运动鞋商店:Sneakerhead
2018/05/10 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
如何用Python来进行查询和替换一个文本字符串
2014/01/02 面试题
校园十佳歌手策划书
2014/01/22 职场文书
《白鹅》教学反思
2014/04/13 职场文书
党员承诺书格式
2014/05/21 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python
python运行脚本文件的三种方法实例
2022/06/25 Python