最近将织梦dedecms的版本升级了下,原来我的是V5.5,现在升级成织梦dedecmsV5.6的。但发现V5.6有一个织梦dedecmsV5.5从来没的错误。

这就是出现如?/a>或?/h3>导致页面错乱问题,如果你的站也遇到这种情况,请试试下面的方法。 

 
找到/include/common.func.php 
//中文截取2,单字节截取模式 
function cn_substr($str,$slen,$startdd=0) 
{ 
global $cfg_soft_lang,$cfg_is_mb,$cfg_is_iconv; 
//判断是否使用mb_substr 
if($cfg_is_mb) 
{ 
if($cfg_soft_lang=='utf-8') mb_internal_encoding("UTF-8"); 
return mb_substr($str, $startdd, $slen*2); 
} 
if($cfg_is_iconv) 
{ 
return iconv_substr($str, $startdd, $slen*2); 
} 
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; 
} 

if(ord($str[$i])>0x80) 
{ 
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; 
} 
} 
} 
return $restr; 
} 
替换为 
//中文截取2,单字节截取模式 
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; 
} 

if(ord($str[$i])>0x80) 
{ 
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; 
} 
} 
} 
return $restr; 
}

发表评论

后才能评论