zoukankan      html  css  js  c++  java
  • 给ThinkSNS扩展了一个中文截取字符串的操作

    /**
     * 中文截取,单字节截取模式
     * @param string $str 需要截取的字符串
     * @param int $slen 截取字符串长度
     * @return string $restr 返回的字符串长度
     * */
    function cn_substr($str,$slen,$startdd=0) {
    	$from = C('DEFAULT_CHARSET');
    	if( $from == 'utf-8' ){
    		$str =  auto_charset($str, 'utf-8', 'gbk');
    	}
    	$restr = "";
    	$c = "";
    	$str_len = strlen($str);
    	if($str_len < $startdd+1) return "";
    	if($str_len < $startdd + $slen || $slen==0) $slen = $str_len - $startdd;
    	$enddd = $startdd + $slen - 1;
    	for($i=0;$i<$str_len;$i++){
    		if($startdd==0) $restr .= $c;
    		else if($i > $startdd) $restr .= $c;
    		if(ord($str[$i])>127){
    			if($str_len>$i+1) $c = $str[$i].$str[$i+1];
    			$i++;
    		}
    		else{	$c = $str[$i]; }
    		if($i >= $enddd){
    			if(strlen($restr)+strlen($c)>$slen) break;
    			else{ $restr .= $c; break; }
    		}
    	}
    	if( $from == 'utf-8' ){
    		$restr = auto_charset($restr, 'gbk', 'utf-8');
    	}
    	return $restr;
    }

    由于项目的需要,需要进行中文截取字符串的操作。可是找了一下,并没有发现TS有这个功能。真是有点费解。

    于是自己动手写了一个。TS的函数都写在common.php里面,


    调用的时候直接在模板中,使用即可。例如 {$bianliang|cn_substr="10"} 

    这里的10代表10个字符 5个汉字


    Meet so Meet. C plusplus I-PLUS....
  • 相关阅读:
    设计模式之Singleton(单态)(转)
    shell编程与循环
    连接查询、视图、事务、索引、外键
    mariadb主从架构
    Lvs虚拟服务器
    python字符串详解
    firewalld防火墙详解
    自动化运维ansible用法
    元组、列表、字典、集合
    内置函数for、while循环控制
  • 原文地址:https://www.cnblogs.com/iplus/p/4490044.html
Copyright © 2011-2022 走看看