编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛  
 
全能 ASP / PHP / ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
发新话题
打印

解决中文被截成乱码的问题

解决中文被截成乱码的问题

<?php
//2007-04-09 Create By Rain Chan
function left($str, $len) { //解决中文被截成乱码的问题
$arr = str_split($str);
$i = 0;
foreach ($arr as $chr) {
if (ord($chr) > 128)
$add = $add ? 0 : 1;
$i++;
if ($i == $len)
break;
}
return substr($str, 0, $len + $add);
}
//echo left($_GET['str'], $_GET['len']);
?>

TOP

最简单的,用mb_扩展库~~

TOP

mb_扩展截出来的不整齐

TOP

<?php
/* 函数名:strSplit
++ 功 能:中英文混合截取
++ 作 者:cator
*/
function strSplit($s, $len) {
$end = '…';
$result = '';
$strLen = strlen($s);
if ($strLen <= $len) {
return $s;
}
$len -= 2;
for ($i=0; $i<$len && $i<$strLen; $i++) {
$c = $s[$i];
if (ord($c) < 0x80) {
$result .= $c;
} elseif ($i+1<$len) {
$result .= $s[$i++] . $s[$i];
}
}
return ($i < $strLen) ? ($result . $end) : $result;
}

echo strSplit('1234567', 10), '<br />';
echo strSplit('1234567890', 10), '<br />';
echo strSplit('1234中文567890abcdefghijkl', 10), '<br />';
echo strSplit('全部都是中文', 10), '<br />';
echo strSplit('全a部b都c是d中e文', 10), '<br />';
?>

TOP

我也来一个
支持中英文混合、左、右截取
<?php
//left左侧截取,right右侧截取
//作者:ISLET
function left($content,$length) {
if($length && strlen($content)>$length){
$num=0;
for($i=0;$i<$length-3;$i++) {
if(ord($content[$i])>127){
$num++;
}
}
$num%2==1 ? $content=substr($content,0,$length-4):$content=substr($content,0,$length-3);
$content.='..';
}
return $content;
}
function right($content,$length) {
if($length && strlen($content)>$length){
$len=strlen($content);
$s=$len-$length;
$num=0;
for($i=$s;$i<$len;$i++) {
if(ord($content[$i])>127){
$num++;
}
}
$num%2==1 ? $content=substr($content,$s+1,$length):$content=substr($content,$s+2,$length);
$content='..'.$content;
}
return $content;
}
?>

TOP

楼上这个好多了,顶!

TOP

学习学习
做你自己! everything will go! lanfei_1234@163.com

TOP

发新话题