收藏文章 楼主
版块:AB模板网   类型:普通   作者:AB模板网   查看:6967   回复:0   获赞:0   时间:2021-10-14 10:51:46
dedecms织梦模板的cn_substr_utf8字符串截取函数商榷   在phpsir看到的这篇文章,主要是说下dedecms 的cn_substr_utf8函数好像有些问题,研究dedecms的朋友可以看下   在dedecms里面 cn_substr_utf8 函数是这样的   代码如下:

/**
* utf-8中文截取,单字节截取模式
*
* @access public
* @param string $str 需要截取的字符串
* @param int $slen 截取的长度
* @param int $startdd 开始标记处
* @return string
*/
if ( ! function_exists('cn_substr_utf8')) {
function cn_substr_utf8($str, $length, $start=0) {
if(strlen($str) < $start+1) {
return '';
}
preg_match_all("/./su", $str, $ar);
$str = '';
$tstr = '';
</p> <p> //为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取
for ($i=0; isset($ar[0][$i]); $i++) {
if(strlen($tstr) < $start) {
$tstr .= $ar[0][$i];
} else {
if(strlen($str) < $length + strlen($ar[0][$i]) ) {
$str .= $ar[0][$i];
} else {
break;
}
}
}
return $str;
}
}
其中   代码如下:

if(strlen($str) < $length + strlen($ar[0][$i]) )
一行可能会造成截取后多了一个字符,可以考虑改为   代码如下:

if(strlen($str) < $length + strlen($ar[0][$i]) -1 )
测试代码如下   代码如下:

$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) {

织梦模板:https://www.jxmseo.com/list-89-1.html

本文转载于网络,如有侵权请联系删除


全站外链: TEC传感器 | 猫掌外链
 
回复列表
默认   热门   正序   倒序

回复:dedecms字符串截取函数怎么用

网站公告

近期本站被人为恶意注册及发布垃圾帖,每一个发帖都会经过审核,一经发现违法或垃圾帖的用户,帖子将被删除或封号,请大家共同维护互联网环境,共创美好互联网未来。

详细的发帖规则请阅读:

《小猪外链网发帖规则》

《小猪外链网最新金币规则》

注:本站严禁发布灰色违禁违法内容,如发现立刻永久封号,如开通会员的概不退款。

Powered by 小猪外链网 8.3.15

©2015 - 2025 小猪SEO外链平台

备案号:浙ICP备17015142号

免责申明:本网站内容由平台入驻会员撰写,除创始人账号外,其他观点仅代表作者本人,不代表小猪外链网立场。如果内容涉及侵犯其他公司、团体的利益、请联系小猪SEO外链网客服举证删除

您的IP:3.145.171.144,2025-05-05 21:32:44,Processed in 0.2711 second(s).

各位站长请准守小猪SEO外链网的发帖规则,文明理性发言

外链优化

用户名:

粉丝数:

签名:

资料 关注 好友 消息
分享
已有0次打赏