PHP中如何截取UTF-8中文字符串?
如果有约200个字(连符号、中、英文)
请问如何截取指定UTF-8中文的字符串?
如要头100个
<?php
$len=100;
$newStr=mb_substr($str,0,$len);
?>
请问如何截取指定UTF-8中文的字符串?
如要头100个
<?php
$len=100;
$newStr=mb_substr($str,0,$len);
?>
这样有时会有最尾的字截取不完整,请问应该如何做?
谢谢
答案或建议:
方法1:
$newStr=mb_substr($str,0,$len, 'utf-8 ');
方法2:
如果服务器不支持mbstring扩展,就用下面这个函数
function subString_UTF8($str, $start, $lenth)
{
$len = strlen($str);
$r = array();
$n = 0;
$m = 0;
for($i = 0; $i < $len; $i++) {
$x = substr($str, $i, 1);
$a = base_convert(ord($x), 10, 2);
$a = substr( '00000000 '.$a, -8);
if ($n < $start){
if (substr($a, 0, 1) == 0) {
}elseif (substr($a, 0, 3) == 110) {
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$i += 2;
}
$n++;
}else{
if (substr($a, 0, 1) == 0) {
$r[ ] = substr($str, $i, 1);
}elseif (substr($a, 0, 3) == 110) {
$r[ ] = substr($str, $i, 2);
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$r[ ] = substr($str, $i, 3);
$i += 2;
}else{
$r[ ] = ' ';
}
if (++$m > = $lenth){
break;
}
}
}
return $r;
} // End subString_UTF8;
}// End String
{
$len = strlen($str);
$r = array();
$n = 0;
$m = 0;
for($i = 0; $i < $len; $i++) {
$x = substr($str, $i, 1);
$a = base_convert(ord($x), 10, 2);
$a = substr( '00000000 '.$a, -8);
if ($n < $start){
if (substr($a, 0, 1) == 0) {
}elseif (substr($a, 0, 3) == 110) {
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$i += 2;
}
$n++;
}else{
if (substr($a, 0, 1) == 0) {
$r[ ] = substr($str, $i, 1);
}elseif (substr($a, 0, 3) == 110) {
$r[ ] = substr($str, $i, 2);
$i += 1;
}elseif (substr($a, 0, 4) == 1110) {
$r[ ] = substr($str, $i, 3);
$i += 2;
}else{
$r[ ] = ' ';
}
if (++$m > = $lenth){
break;
}
}
}
return $r;
} // End subString_UTF8;
}// End String
返回的是个数组,显示的join一下:
echo join( ' ',subString_UTF8($str, $start, $lenth));
echo join( ' ',subString_UTF8($str, $start, $lenth));
文章出自:http://www.baikewenda.com/h/1103/a37249.html
本站其它内容:
→Windows7下无法正常登陆IPV6
→php中定义网站根目录的常用方法
→smarty的truncate函数截取utf-8编码的字符串乱码
→Win xp鼠标滚轮滚动行数每次休眠或待机之后都变回1
→在电脑上看移动硬盘上的电影,每次都不能安全弹出移动设备?
→工行捷德key更新证书问题
→硬盘安装ubuntu问题
→windows7的设置备份等链接无法点击造成无法设置
→android手机怎么发彩信
→VEGAS或AE怎么做到视频只有一部分有颜色
→因iastor.sys引起的蓝屏问题
→Win7桌面上的程序快捷方式全都打不开了,怎么办?
→为什么安装ie9时老是安装失败呢?
→Windows7 中文家庭高级版为什么不能激活?
→maya里按P键和约束里的父子有什么区别啊?
→AfterEffect CS3中怎么抠动态图
→php中定义网站根目录的常用方法
→smarty的truncate函数截取utf-8编码的字符串乱码
→Win xp鼠标滚轮滚动行数每次休眠或待机之后都变回1
→在电脑上看移动硬盘上的电影,每次都不能安全弹出移动设备?
→工行捷德key更新证书问题
→硬盘安装ubuntu问题
→windows7的设置备份等链接无法点击造成无法设置
→android手机怎么发彩信
→VEGAS或AE怎么做到视频只有一部分有颜色
→因iastor.sys引起的蓝屏问题
→Win7桌面上的程序快捷方式全都打不开了,怎么办?
→为什么安装ie9时老是安装失败呢?
→Windows7 中文家庭高级版为什么不能激活?
→maya里按P键和约束里的父子有什么区别啊?
→AfterEffect CS3中怎么抠动态图