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....
  • 相关阅读:
    Python环境的安装
    tar.xz如何解压:linux和windows下tar.xz解压命令介绍
    设置SVN忽略文件和目录(文件夹)
    C#【Thread】Interlocked 轻量级锁
    手把手教你做个AR涂涂乐
    理解UV贴图
    unity animation readonly 无法加事件?
    LUA Metatables
    增强现实阴影
    unity shader tags
  • 原文地址:https://www.cnblogs.com/iplus/p/4490044.html
Copyright © 2011-2022 走看看