phpsmartytruncateUTF8乱码问题解决办法
问题 乱码 解决办法
2023-06-13 09:15:28 时间
估计不少玩smarty模板的小朋友都遇到过裁切乱码问题。特别是UTF8编码的。
以下代码保存为modifier.truncate2.php存到smartylibs下的plugin目录下
然后裁剪的时候用$v->content|truncate2:100
就搞定了。
如果不好用可能是缓存导致,请速度删除templates_c下的缓存文件(小编搞的时候遇到缓存问题。)
<?php
/**
*Smartyplugin
*@packageSmarty
*@subpackageplugins
*/
/**
*Smartytruncatemodifierplugin
*
*Type: modifier<br>
*Name: truncate<br>
*Purpose: Truncateastringtoacertainlengthifnecessary,
* optionallysplittinginthemiddleofaword,and
* appendingthe$etcstringorinserting$etcintothemiddle.
*@linkhttp://smarty.php.net/manual/en/language.modifier.truncate.php
* truncate(Smartyonlinemanual)
*@author MonteOhrt<monteatohrtdotcom>
*@paramstring
*@paraminteger
*@paramstring
*@paramboolean
*@paramboolean
*@returnstring
*/
functionsmarty_modifier_truncate2($string,$length=80,$etc="...",$count_words=true){
return$returnstr=substr_utf8($string,0,$length).$etc;
}
functionsubstr_utf8($str,$start=0,$length=-1,$return_ary=false){
$len=strlen($str);if($length==-1)$length=$len;
$r=array();
$n=0;
$m=0;
for($i=0;$i<$len;$i++){
$x=substr($str,$i,1);
$a=base_convert(ord($x),10,2);
$a=substr("00000000".$a,-8);
if($n<$start){
if(substr($a,0,1)==0){
}elseif(substr($a,0,3)==110){
$i+=1;
}elseif(substr($a,0,4)==1110){
$i+=2;
}
$n++;
}else{
if(substr($a,0,1)==0){
$r[]=substr($str,$i,1);
}elseif(substr($a,0,3)==110){
$r[]=substr($str,$i,2);
$i+=1;
}elseif(substr($a,0,4)==1110){
$r[]=substr($str,$i,3);
$i+=2;
}else{
$r[]="";
}
if(++$m>=$length){
break;
}
}
}
return$return_ary?$r:implode("",$r);
}
/*vim:setexpandtab:*/
?>
samrty的插件体系还是比较智能而且容易修改的。
相关文章
- 解决eclipse乱码问题[通俗易懂]
- 小程序奇葩问题汇总
- MySQL客户端输出窗口显示中文乱码问题解决办法详解数据库
- 解决Oracle查询中文乱码问题(oracle查询中文乱码)
- 解决Oracle安装界面乱码问题(oracle安装界面乱码)
- 乱码解决Mac上MySQL中文乱码问题(macmysql中文)
- 解决Oracle数据库锁表僵死进程问题(oracle锁表进程)
- 解决Linux下Web乱码问题的有效方法(linuxweb乱码)
- MySQL与C结合:解决乱码问题(mysqlc乱码)
- MySQL频繁更新引发的性能问题及解决方案(mysql频繁更新)
- 怎样解决MySQL中文乱码问题(mysql中中文出现乱码)
- MySQL汉字乱码问题解决方法分享(mysql个别汉字乱码)
- 如何解决MySQL突然消失的问题(mysql一闪就消失)
- 如何解决MySQL运行问题25字解决方案大揭秘(mysql不可以运行)
- 解决Redis存储中的乱码问题(存储redis中乱码)
- 如何解决Redis重启后数据丢失的问题(redis 重启数据没了)
- 解决Oracle10中文乱码问题(oracle10中文乱码)
- Asp.net中的页面乱码的问题
- 用javascript解决外部数据抓取中的乱码问题
- phpchr()ord()中文截取乱码问题解决方法
- css网页布局中注意的几个问题小结
- 常见php与mysql中文乱码问题解决办法