<?php

/*

在start不等于0的情况下,一定要从头开始逐个字符检查是否是中文

*/

function cn_substr($str,$start,$len,$encoding)
{
$strstr="";
if(($start==0)&&($len > strlen($str)))
{
$strstr=$str;
}
else 
    {
//如果不是从0开始,就要从字符串的头部逐个字符判定是否是中文
  if($start!=0)
  {
$k=$start;
for($j=0;$j<$k;$j++)
{
if(ord(substr($str,$k,1))>127)
{
if($encoding=='utf8')
{
$start+=2;
$j+=2;
$k+=2;
}
else if($encoding=='gb2312')
{
$start+=1;
$j+=1;
$k+=1;
}

}

}

}

//用于字符串的截取
   for($i=$start;$i<$start+$len;$i++)
  {
$sub=substr($str,$i,1);
if(ord($sub)>127)
{
if($encoding=='utf8')
{
$strstr.=substr($str,$i,3);
$len+=2;
$i+=2;

}
else if($encoding=='gb2312')
{
$strstr.=substr($str,$i,2);
$len+=1;
$i+=1;
}

}else
{
$strstr.=substr($str,$i,1);
}

}//for
 }//if
return $strstr;
}//func

function get_time()
{
list($msec,$sec)=explode(" ",microtime());
return (float)$sec+(float)$msec;
}

$str="我是最abcde";
$time1=get_time();
var_dump(mb_substr($str,2,3,'utf8'));
$time2=get_time();
var_dump(cn_substr($str,2,3,'utf8'));
$time3=get_time();
echo "<br/>*********************<br/>";
echo 'time2-time1:'.($time2-$time1);echo "<br/>";
echo 'time3-time2:'.($time3-$time2);echo "<br/>";
?>

自己编写的中文字符串的截取函数相关推荐

  1. python 中文字符串截取,Python实现针对含中文字符串的截取功能示例

    本文实例讲述了Python实现针对含中文字符串的截取功能.分享给大家供大家参考,具体如下: 对于含多字节的字符串,进行截断的时候,要判断截断处是几字节字符,不能将多字节从中分割,避免截断后乱码 下面给 ...

  2. 编写一个用于字符串比较的函数

    编写一个用于字符串比较的函数mystrcmp. 程序的运行结果如下所示: 输入: word work 输出: word<work 这是一个神奇的题--题目显示不完全-- 然后--按位比较ASCI ...

  3. php支持中文字符串分割的函数

    <?php/*** str_split不支持中文,利用mb_xx函数实现个* 2个用哪个都成* */ $str = "月日上午湖北荆州安良百货商场内一名岁的女子被搅入手扶电梯身亡据广西 ...

  4. php返回第一个字符串的码点_PHP 字符串编码截取函数

    一个效率更高的全半角字符串截取函数 [原创,转载请注明:[url]http://wfyang.blog.51cto.com[/url]]现在流传的那几个字符串截取函数,一般都是对字符串进行循环判断,如 ...

  5. 小生谈字符串的截取函数SubString()--仅限csharp语言

    也许做字符处理的每一个人,都会用到这个字符串的截取功能,我在这里谈论的是在.NET C#里的字符串截取函数SubString(),不是别的语言中的,请各位看的时候麻烦注意一下. 它主要是String类 ...

  6. Django使用Ajax传递中文字符串给视图函数显示乱码的解决方法

    网上看到许多Ajax传递中文字符的解决方法,但都是比较高级的方法.我看不懂啊,觉得好复杂.翻了好多前辈的网页,找到一个解决方案.我这里用比较直白的语言解答一下,让像我这样的小白不必看到别人的解答方法就 ...

  7. php 汉字分割,php支持中文字符串分割的函数

    str_split不支持中文,利用mb_xx函数实现个 /** * Convert a string to an array * @param string $str * @param number ...

  8. php字符串分割汉字,php支持中文字符串分割的函数

    本文给大家分享了2个php使用mb_xxx方法来实现中文字符分割的方法,其基本思路都差不多,有需要的小伙伴可以参考下. str_split不支持中文,利用mb_xx函数实现个 /** * Conver ...

  9. php 字符串 中文,PHP的中文字符串截取

    在PHP中,substr()函数截取带有中文字符串的话,可能会出现乱码,这是因为中西文一个字节所占有的字节数不一样,而substr()的长度参数是按照字节去算的.substr()截取位数不准确,sub ...

  10. php+中午截取,php中截取中文字符串的代码小结

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

最新文章

  1. itertools库
  2. 让Web开发者事半功倍的8个网站
  3. 做后台支付系统,你要注意这些!!!
  4. kickstart批量安装Linux系统
  5. java数据类型后加三个点...
  6. 计算机高效课堂建设,打造职业学校计算机高效课堂.doc
  7. js根据数组中对象的多个属性值进行排序
  8. Springboot 启动时Bean初始化,启动异常-Assert.isTrue(condition,message) 报错
  9. Bean的自动装配Autowiring
  10. Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
  11. 看jQuery源码的技巧
  12. matlab求两向量夹角_MATLAB概率和统计(2)
  13. 第五章第五题(千克与磅之间的互换)(Conversion from kilogram to pound and pound to kilogram)
  14. Nginx基础之错误页面配置/流量控制/访问控制/变量/监控/HTTPS配置/性能优化
  15. 差分数组:PIPI的区间操作Ⅰ
  16. CSDN日报180605——《认知升级是令我们变得优秀的重要基石》
  17. ImageView设置rounded corner
  18. 又一暴强的截图工具 ShareX
  19. 无损放大图片软件有什么?安利几款放大图片的软件
  20. 转载知乎大神设置普通路由器支持IPV6

热门文章

  1. 【转载】聪明说话35招
  2. 用LDA在R中聚类四本小说
  3. 计算机网络领悟摩尔定,计算机网络等133信息技术展望P15-P17.PPT
  4. Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
  5. springmvc json串的null值替换为空值
  6. Quartz.Net进阶之三:SimpleTrigger详述
  7. css focus 选择器用于选取获得焦点的元素
  8. [记录]Python的master-worker和epoll模式
  9. 关于程序分析和代码编写
  10. VIM批量文件查找和替换