PHP中英混合字符串截取函数代码

2014-09-26  来源:本站原创  分类:php技巧  人气:0 

今天在遇到了一个中英字符串截取的问题,在gbk里中文里每个字占两字节,如果全是中文的话,用substr()函数就可以实现了,但中英都有的话就麻烦了,在以前收藏的代码里找到了一个不错的函数,很好的实现了截取的功能

function get_word($string, $length, $dot = '..',$charset='gbk') {
if(strlen($string) <= $length) {
return $string;
}
$string = str_replace(array(' ',' ', '&', '"', '<', '>'), array('','','&', '"', '<', '>'), $string);
$strcut = '';
if(strtolower($charset) == 'utf-8') {
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$t = ord($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1; $n++; $noc++;
} elseif(194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif(224 <= $t && $t < 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif(240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif(248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif($t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n++;
}
if($noc >= $length) {
break;
}
}
if($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
} else {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
}
}
return $strcut.$dot;
}
$str = "欢迎 visit 简明 nowamagic";
$str_result = get_word($str, 12);
echo $str_result;

测试运行结果:
欢迎 visit..

相关文章
  • PHP中英混合字符串截取函数代码 2014-09-26

    今天在遇到了一个中英字符串截取的问题,在gbk里中文里每个字占两字节,如果全是中文的话,用substr()函数就可以实现了,但中英都有的话就麻烦了,在以前收藏的代码里找到了一个不错的函数,很好的实现了截取的功能 function get_word($string, $length, $dot = '..',$charset='gbk') { if(strlen($string) <= $length) { return $string; } $string = str_replace(array

  • PHP获取中英混合字符串长度的方法 2013-10-05

    这篇文章主要介绍了PHP获取中英混合字符串长度的方法,需要的朋友可以参考下 今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数. $str = 'Hello world!'; echo strlen($str); // 输出12 然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的.在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,

  • C#中英文混合字符串截取函数 2014-03-03

    这篇文章介绍了C#中英文混合字符串截取函数,有需要的朋友可以参考一下 /// <summary> /// 截断字符串 /// </summary> /// <param name="maxLength">最大长度</param> /// <param name="str">原字符串</param> /// <returns></returns> public static

  • php中支持多种编码的中文字符串截取函数! 2013-11-22

    支持多种编码的中文字符串截取函数! /* * @todo 中文截取,支持gb2312,gbk,utf-8,big5 * * @param string $str 要截取的字串 * @param int $start 截取起始位置 * @param int $length 截取长度 * @param string $charset utf-8|gb2312|gbk|big5 编码 * @param $suffix 是否加尾缀 */ function csubstr($str, $start=0,

  • 支持中英文字符的字符串截取函数 2012-03-09

    由于中文和英文字符在asp程序统计和截取时经常得到的结果不理想,这个函数可以在中英混合的字符中正确的截取指定长度的字符串 <% '"************* 取得字符串长度 ************** Function strlen(txt) txt=trim(txt) x = len(txt) y = 0 for ii = 1 to x if trim(asc(mid(txt,ii,1)))<"0" or trim(asc(mid(txt,ii,1)))&g

  • php字符串截取函数用法分析 2013-10-11

    这篇文章主要介绍了php字符串截取函数用法分析,给出了两个示例,分别讲述了PHP自带的字符串截取函数的用法与自定义函数实现字符串截取的方法,是非常实用的字符串操作技巧,需要的朋友可以参考下 本文实例分析了php字符串截取函数用法.分享给大家供大家参考.具体分析如下: php自带的截取字符串的函数只能处理英文,数字的不能截取中文混排的,后面一个示例比较好用,第一个主要是给初学者学学用的,具体代码如下: <?php //构造字符串 $str = "ABCDEFGHIJKLMNOPQRSTUVW

  • JavaScript实现的字符串replaceAll函数代码分享 2013-10-17

    这篇文章主要介绍了JavaScript实现的字符串replaceAll函数代码分享,本文直接给出实现代码,需要的朋友可以参考下 由于javascript中的replace函数无法替换全部匹配的字符串,所以需要为String类增加一个方法,代码如下: String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) { if (!RegExp.prototype.isPrototypeOf(reallyDo)) {

  • 多个PHP中文字符串截取函数 2014-02-20

    字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到.虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了 <?php function sysSubStr($string,$length,$append = false) { if(strlen($string) <= $length ) { return $string; } else { $i = 0; while ($i < $length) { $stringTMP

  • Mysql字符串截取函数SUBSTRING的用法说明 2014-03-15

    今天建视图时,用到了MySQL中的字符串截取,很是方便. 感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2.从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长

  • C#实现中英文混合字符串截取的方法 2014-06-06

    这篇文章主要介绍了C#实现中英文混合字符串截取的方法,是C#字符串操作的常用方法,需要的朋友可以参考下 本文实例讲述了C#实现中英文混合字符串截取的方法,是C#字符串操作中非常常用的一个方法.分享给大家供大家参考之用.具体方法如下: 具体功能代码如下: /// <summary> /// 截取中英文混合字符串 /// </summary> /// <param name="text">字符文本</param> /// <param

  • PHP中常用的字符串格式化函数总结 2014-06-13

    这篇文章主要介绍了PHP中常用的字符串格式化函数总结,本文讲解的函数是WEB中经常用到的,例如取出空格和字符串填补函数.字符串大小写的转换.和HTML标签相关的字符串格式化等,需要的朋友可以参考下 字符串的格式化就是将字符串处理为某种特定的格式.通常用户从表单中提交给服务器的数据都是字符串的形式,为了达到期望的输出效果,就需要按照一定的格式处理这些字符串后再去使用.经常见到的字符串格式化函数如下图所示: 注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式

  • js字符串截取函数substr substring slice使用对比 2014-06-26

    字符串截取函数有substr.substring以及slice等等,下面将为大家介绍下各自的使用,感兴趣的朋友可以了解下 常用三个的字符串截取函数:substr substring slice,调用方式如下 stringObject.slice(start,end) stringObject.substr(start,length) stringObject.substring(start,end) 最明显的是substr,第二个参数是length,是截取长度,其他两个函数的第二个参数都是末尾字

  • Ruby中常用的字符串处理函数使用实例 2014-10-10

    这篇文章主要介绍了Ruby中常用的字符串处理函数使用实例,本文总结了Ruby中最常用的字符串处理函数,如返回字符串的长度.判断字符串中是否包含另一个串.字符串插入.字符串分隔.默认分隔符为空格等内容,需要的朋友可以参考下 1.返回字符串的长度 str.length => integer 2.判断字符串中是否包含另一个串 复制代码 代码如下: str.include? other_str => true or false "hello".include? "lo&q

  • js substr支持中文截取函数代码(中文是双字节) 2014-01-02

    js substr支持中文截取函数代码,中文是双字节,配有实例需要的朋友可以参考下 <script language="JavaScript"> //得到字符总数 function getChars(str) { var i = 0; var c = 0.0; var unicode = 0; var len = 0; if (str == null || str == "") { return 0; } len = str.length; for(i

  • asp CutStrX字符串截取函数(过滤全部HTML标记) 2014-12-25

    asp CutStrX字符串截取函数(过滤全部HTML标记),比较不错,需要的朋友可以参考下. Function CutStrX(ByVal Str,ByVal StrLen) Dim l,t,c,i,r '过滤全部HTML标记 Set r=New RegExp r.Global=True r.MultiLine=True r.Pattern="(</?[A-Za-z][A-Za-z0-9]*[^>]*>)" str=r.Replace(str," &quo

  • PHP实现Javascript中的escape及unescape函数代码分享 2015-01-25

    这篇文章主要介绍了PHP实现Javascript中的escape及unescape函数代码分享,本文给出两个实现版本,需要的朋友可以参考下 这个类相当好用.作用么,PHP做JSON传递GBK字符,比如中文,日文,韩文神马的Unicode最合适不过了.. <?php classcoding { //模仿JAVASCRIPT的ESCAPE和UNESCAPE函数的功能 functionunescape($str) { $text=preg_replace_callback("/%u[0-9A-Z

  • asp 字符串截取函数 2015-04-28

    asp 字符串截取函数 '********************************************************* '函数:cutStr[str(strlen)] '参数:str,待处理的字符串,strlen,截取的长度 '作者:木木 '日期:2007/7/12 '描述:截取指定长度的字符串 '示例:<%=cutStr("欢迎光临阿里西西",5)%> '************************************************

  • 几个支持中文的PHP字符串截取函数 2012-05-02

    字符串截取是一个非常常见的编程任务,而往往带中文的字符串截取会经常用到.虽然不难,但是自己写函数实现又耗费时间,这里介绍一个比较好用的字符串截取函数,能够胜任基本的需求了. <?php function sysSubStr($string,$length,$append = false) { if(strlen($string) <= $length ) { return $string; } else { $i = 0; while ($i < $length) { $stringTM

  • Javascript常用字符串判断函数代码分享 2014-02-02

    这篇文章主要分享了一段Javascript常用字符串判断函数的代码,基本上常见的字符串判断都涵盖在内了,非常实用,小伙伴们参考下. 具体的解释查看注释吧,这里就不多废话了,直接上代码: /* function obj$(id) 根据id得到对象 function val$(id) 根据id得到对象的值 function trim(str) 删除左边和右边空格 function ltrim(str) 删除左边空格 function rtrim (str) 删除右边空格 function isEmp

  • PHP开发中常用的字符串操作函数 2015-02-11

    在编程的过程当中,字符串的操作是非常重要的并且经常会被用到,字符串常用的操作具体的包括字符串的拼接,替换字符串,查找字符串,比较字符串,复制字符串以及计算字符串的长度等等. 1,拼接字符串 拼接字符串是最常用到的字符串操作之一,在PHP中支持三种方式对字符串进行拼接操作,分别是圆点.分隔符{}操作,还有圆点等号.=来进行操作,圆点等号可以把一个比较长的字符串分解为几行进行定义,这样做是比较有好处的. 2,替换字符串 在PHP这门语言中,提供了一个名字叫做substr_replace()的函数,该