php自定义截取中文字符串-utf8版
2018-06-22 05:10:03来源:未知 阅读 ()
php自定义截取中文字符串-utf8版
UTF-8的编码范围(utf-8使用1-6个字节编码字符,实际上只使用了1-4字节):
1个字节:00——7F 2个字节:C080——DFBF 3个字符:E08080——EFBFBF 4个字符:F0808080——F7BFBFBF
$str = 'abcd我是中国人';
echo strlen($str), '<br/>';
echo mstrlen($str), '<br/>';
echo msubstr($str, 3, 9);
/**
* 统计utf8下字符串长度
*/
function mstrlen($str) {
$len = 0;
$i = 0;
$slen = strlen($str);
while ($i < $slen) {
$o = ord($str[$i]);
if ($o < 127) {
$i++;
} elseif ($o < 224) {
$i+=2;
} else {
$i+=3;
}
$len++;
}
return $len;
}
/**
* 截取utf8编码下的字符串
*/
function msubstr($str, $start, $length) {
$len = mstrlen($str);
if($start < 0) {
$start += $len;
if($start < 0) {
$start = 0;
}
}
$slen = strlen($str);
$index = 0;
for ($i = 0; $i<$start && $i<$slen; $i++) {
$o = ord($str[$index]);
if ($o < 127) {
$index++;
}elseif ($o < 224) {
$index+=2;
} else {
$index +=3;
}
}
$length+=$index;
$newStr = '';
for ($i = $index; $i < $length && $i<$slen; $i++) {
$o = ord($str[$i]);
if ($o < 127) {
$newStr .= $str[$i];
} elseif ($o < 224) {
$newStr .= substr($str, $i, 2);
$i+=1;
$length++;
} else {
$newStr .= substr($str, $i, 3);
$i+=2;
$length+=2;
}
}
return $newStr;
}
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:php在linux中执行外部命令
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
