字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到。虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了。

1. 截取GB2312中文字符串

< ?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

//截取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

/*

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

* @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中截取中文字符串的代码小结相关推荐

  1. Golang中获取中文字符串的子串字符位置及截取子串

    Golang中获取中文字符串的子串字符位置及截取子串 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.cs ...

  2. java字符串剪切函数,java用substring函数截取string中一段字符串,substringstring

    java用substring函数截取string中一段字符串,substringstring from  http://www.cnblogs.com/laiweili/archive/2012/11 ...

  3. 在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码?

    在一个JS文件中包含中文字符串,通过innerHTML输出后中文乱码? Posted on 2008-07-13 12:00 尹合磊 阅读(1902) 评论(0)  编辑 收藏 所属分类: ASP.N ...

  4. 按照拼音对数组中的中文字符串排序的算法

    按照拼音对数组中的中文字符串排序的算法,不是很难,这里直接放上代码,Demo去最下面找: 注:里面用到一个叫George的牛人写的中文转拼音首字母的函数pinyinFirstLetter,因为内容实在 ...

  5. 如何提取代码中的中文字符串

    前言 在一般情况下,程序中的中文字符串都是写在某个文件中读取(例如json),但是大部分时候我们都是直接写入到代码中,这个时候如果我们想把字符串提取出来就需要一个一个去找,或者通过IDE提供的字符串匹 ...

  6. oracle 截取字符串中间_oracle截取字段中的部分字符串

    使用Oracle中Instr()和substr()函数: 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为: instr(sourceString,de ...

  7. 解决 python用 xlsxwrite 向excel 中写入中文字符串变量 报错

    问题:  UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 7: ordinal not in range(12 ...

  8. qt接收服务器信息中文乱码,在qt提取lineedit中的中文字符串,通过tcp通信时,服务器接收乱码的情况,解决办法...

    使用的是qt5.9版本,在取lineedit中的中文字符转成字符串,后转成char*的过程中,在仅仅使用string str.tolocal8bit,是不起作用的,转换不了格式,输出的char*数组还 ...

  9. java字符截取_java中截取字符串方法

    Java 简介 substring public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串.该子字符串始于指定索引处的字符,一直 ...

最新文章

  1. AI开学第一课!CMU深度学习秋季课程开课了(附PPT 、视频)
  2. 在Windows下编译WebRTC
  3. php-URL方法下载远程图片
  4. Sentry : Spark-sql 读取hive数据 权限问题
  5. anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾
  6. Windows下将jar包封装成服务程序
  7. 以前收集到的PHP总结笔记
  8. 如何在MSWord中加入MSAgent
  9. 循环输出100以内的素数
  10. 以文会友,以书传情—山西省侨商联合会召开书画艺术委员会成立大会
  11. 财会法规与职业道德【5】
  12. java根据经纬度获取地址
  13. scikit-learn中的KMeans聚类实现
  14. Ubuntu解决键盘错乱与图形化切换
  15. Markdown中空格和换行
  16. CNN数据集——自己建立数据集要点
  17. 文件传输工具Xftp5安装图解
  18. 金融科技大数据产品推荐:Hyperchain--国产自主可控的企业级联盟区块链平台
  19. 固定电话号码正则表达式(支持手机号码,3-4位区号,7-8位直播号码,1-4位分机号)
  20. Android 百度地图SDK 实现获取周边位置POI详解

热门文章

  1. 贪心算法——洛谷(P4995)跳跳!
  2. mysql between 等于_MySQL中BETWEEN子句的用法详解
  3. zabbix设置mysql登陆免报警_zabbix3.0.2 监控mysql服务down的时候不触发报警的问题修复...
  4. 33个PPT下载丨2018年PostgreSQL中国技术大会PPT
  5. 上海理工大学:用数字技术打响智慧抗疫信息战
  6. 为了减少代码复杂度,我将if-else升级为面向状态编程
  7. MySQL数据库事务隔离性的实现
  8. 混合编程:如何用python11调用C++
  9. CSS开发过程中的20个快速提升技巧
  10. 【华为云技术分享】漫谈LiteOS-Huawei_IoT_Link_SDK_OTA 开发指导