免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: redor
打印 上一主题 下一主题

谁有截取中文字符串的函数 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2005-11-17 01:18 |只看该作者
当一位的编码的范围超过某一范围就并字节处理撒
可以去参考unicode的utf-8,16,32如何定义撒

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
12 [报告]
发表于 2005-11-17 10:33 |只看该作者
原帖由 wobushiwo 于 2005-11-17 01:18 发表
当一位的编码的范围超过某一范围就并字节处理撒
可以去参考unicode的utf-8,16,32如何定义撒



看看我用正则写的那一个

论坛徽章:
0
13 [报告]
发表于 2005-11-17 14:08 |只看该作者
难道没有人用过mbstring,可惜了一个好东东。

论坛徽章:
0
14 [报告]
发表于 2005-11-17 16:15 |只看该作者
原帖由 swingcoder 于 2005-11-17 14:08 发表
难道没有人用过mbstring,可惜了一个好东东。

mb_strimwidth()这个函数吧,用UTF-8编码美问题,用GB2312也会出问题的

论坛徽章:
3
天蝎座
日期:2014-10-25 13:44:312015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:48:31
15 [报告]
发表于 2009-01-31 12:32 |只看该作者
我来挖一下坟。


不知道有人了解source insight里面的 宏  没?

请问,source insight里面有没有判断汉字的功能,
功能:第79列是汉字 还是 非汉字;

谢谢;

论坛徽章:
0
16 [报告]
发表于 2009-01-31 18:55 |只看该作者

两个都测试没有通过

乔和深空的会出现乱码状况,我还是老老实实MB方法吧
rains 该用户已被删除
17 [报告]
发表于 2009-02-01 15:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
18 [报告]
发表于 2009-02-03 17:45 |只看该作者

网上找的~


  1. function utf8Substr($str, $from, $len)
  2. {
  3.     return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
  4.                        '((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
  5.                        '$1',$str);
  6. }

  7. function gb2312Substr($str, $start, $len) {
  8.     $tmpstr = "";
  9.     $strlen = $start + $len;
  10.     for($i = 0; $i < $strlen; $i++) {
  11.         if(ord(substr($str, $i, 1)) > 0xa0) {
  12.             $tmpstr .= substr($str, $i, 2);
  13.             $i++;
  14.         } else
  15.             $tmpstr .= substr($str, $i, 1);
  16.     }
  17.     return $tmpstr;
  18. }

复制代码

论坛徽章:
0
19 [报告]
发表于 2009-02-04 10:19 |只看该作者
贴一个我自己写的,功能跟lz要求的有点小小的差别
function cutoff($str,$num,$extra='...')
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (function_exists('mb_strlen'))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (mb_strlen($str,'utf-8')>$num)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return mb_substr($str,0,$num,'utf-8').$extra;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $str;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$loop=0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for ($i=0;$i<strlen($str);$i++)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$loop++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($loop>$num)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return substr($str,0,$i).$extra;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( between(ord(substr($str,$i,1)),192,223) && between(ord(substr($str,$i,1)),128,191) )
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseif ( between(ord(substr($str,$i,1)),224,239) && between(ord(substr($str,$i+1,1)),128,191) && between(ord(substr($str,$i+2,1)),128,191))
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$i+=2;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $str;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;function between($num,$mix,$max)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ($num>=$mix  && $num<=$max)?true:false;
&nbsp;&nbsp;&nbsp;&nbsp;}

论坛徽章:
0
20 [报告]
发表于 2009-02-08 18:00 |只看该作者
项目都是用UTF-8的,所以喜欢
mb_internal_encoding("UTF-8");
mb_substr($rs->fields['article_main_title'],0,14) . '...';
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP