PHP中文字符串截断无乱码解决方法中文字符串截断无乱码解决方法
主要为大家详细介绍了PHP获取用户客户端真实IP的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一
下
一个比较好用的字符串截取函数:
function substring($str, $start, $length){ //比较好用字符串截取函数
$len = $length;
if($length < 0){
$str = strrev($str);
$len = -$length;
}
$len= ($len < strlen($str)) ? $len : strlen($str);
$tmpstr = "";
for ($i= $start; $i < $len; $i ++)
{
if (ord(substr($str, $i, 1)) > 0xa0)
{
$tmpstr .= substr($str, $i, 2);
$i++;
} else {
$tmpstr .= substr($str, $i, 1);
}
}
if($length < 0) $tmpstr = strrev($tmpstr);
return $tmpstr;
}
使用方法示例:
$str1 = '我是一串比较长的中文不带英文';
$str2 = '我是一串比较长的中文带yingwen';
$len = strlen($str1);
echo '<br />'.$len; //return 28
$len = strlen($str2);
echo '<br />'.$len; //return 29
echo '<br />';
echo substring($str1, 0, 11);
echo '<br />';
echo substring($str2, 0, 11);
echo '<br />';
echo substring($str1, 16, 28);
echo '<br />';
echo substring($str2, 16, 29);
结果显示:
28
29
我是一串比较
我是一串比较
中文不带英文
中文带yingwen
这个函数十分有用,比如用来截断比较长的文件名,但是要在中间加上...,可以这样来做:
function formatName($str, $size){
$len = strlen($str);
if(strlen($str) > $size) {
$part1 = substring($str, 0, $size / 2);
$part2 = substring($str, $len - ($size/2), $len);
return $part1 . "..." . $part2;
} else {
return $str;
}
}
另外,网上看到一种超级简单的中文截断解决方案,试用了一下,效果也不错:
echo substr($str1,0,10).chr(0);
评论0
最新资源