时间:2016-02-16 19:00 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的电脑教程之dedeCMS系列教程:【dedecms 的cn_substr_utf8字符串截取函数商榷】,请阅读以下详细内容!
dedecms 的cn_substr_utf8字符串截取函数商榷
$f="你好fasdfa你fasdf#e#";
$pos=strpos($f,'#e#');
var_dump($pos);
var_dump(cn_substr_utf8($f,$pos));
var_dump(cn_substr_utf82($f,$pos));</p> <p>function cn_substr($str, $slen, $startdd=0)
{
global $cfg_soft_lang;
if($cfg_soft_lang=='utf-8')
{
return cn_substr_utf8($str, $slen, $startdd);
}
$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;
}</p> <p> if(ord($str[$i])>0x80)
{
if($str_len>$i+1)
{
$c=$str[$i].$str[$i+1];
}
$i++;
}
else
{
$c=$str[$i];
}</p> <p> if($i >=$enddd)
{
if(strlen($restr)+strlen($c)>$slen)
{
break;
}
else
{
$restr .=$c;
break;
}
}
}
return $restr;
}</p> <p>function cn_substr_utf8($str, $length, $start=0)
{
if(strlen($str) < $start+1)
{
return '';
}
preg_match_all("/./su", $str, $ar);</p> <p> $str='';
$tstr='';</p> <p> //为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取
for($i=0; isset($ar[0][$i]); $i++)
{
if(strlen($tstr) < $start)
{</p> <p> $tstr .=$ar[0][$i];
}
else
{</p> <p> if(strlen($str) < $length + strlen($ar[0][$i]) )
{</p> <p> $str .=$ar[0][$i];
}
else
{</p> <p> break;
}
}
}
return $str;
}</p> <p>function cn_substr_utf82($str, $length, $start=0)
{
if(strlen($str) < $start+1)
{
return '';
}
preg_match_all("/./su", $str, $ar);</p> <p> $str='';
$tstr='';</p> <p> //为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取
for($i=0; isset($ar[0][$i]); $i++)
{
if(strlen($tstr) < $start)
{</p> <p> $tstr .=$ar[0][$i];
}
else
{</p> <p> if(strlen($str) < $length + strlen($ar[0][$i]) -1 ) // phpsir 加了 -1
{</p> <p> $str .=$ar[0][$i];
}
else
{</p> <p> break;
}
}
}
return $str;
}
关于dedecms 的cn_substr_utf8字符串截取函数商榷的用户互动如下:
相关问题:DEDECMS系统的配置文件中有这么一句:substr(DEDEI...
答:您好,很高兴为您解 您使用的php版本为php5.4吧。 PHP 5.4已经启用了session_register()方法,造成了此函数不可用。 要么换php低版本,或者去掉或注释掉所有的session_register(),改用直接存$_SESSION数组。 >>详细
相关问题:[field:info function="cn_substr(@me,120)"/]这个...
答:{dede:arclist row=1 typeid=3 titlelen=24 infolen='70'} [field:info/]... {/dede:arclist} >>详细
相关问题:dedecms ask系统中<?php echo cn_substr($row['tit...
答:直接调用在描述里面就可以了啊 >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
