对字符的接取可以用substr() 之后看了一下文章可以用mb的扩展库mb_substr() 但如果中E数字混排的时候
可能会出现乱码 网上google 下 找到这个 收藏了
<?
/*
* 可以避免乱码的截取汉字
* 参数 $str 为字符串,$start 为开始字符,$len 结束字符
* 返回截取后的字符
*/
function
msubstr(
$str
,
$start
,
$len
) {
$tmpstr
=
""
;
$strlen
=
$start
+
$len
;
for
(
$i
=
0
;
$i
<
$strlen
;
$i
++
) {
if
(
ord
(
substr
(
$str
,
$i
,
1
))
>
0xa0
) {
$tmpstr
.=
substr
(
$str
,
$i
,
2
);
$i
++
;
}
else
$tmpstr
.=
substr
(
$str
,
$i
,
1
);
}
return
$tmpstr
;
}
?>
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<?
php
/*
#$start为起始位置,默认为0
#$len为截取长度,如遇半个汉字,则自动降低长度而不是取整个汉字,保证了不会超过规定的长度
*/
function
substr_cn(
$str
,
$len
,
$start
=
0
)
{
$strlen
=
strlen
(
$str
);
for
(
$i
=
0
;
$i
<
$strlen
;
$i
++
)
{
if
(
$i
>=
$start
&&
$i
<
(
$start
+
$len
))
{
if
(
ord
(
substr
(
$str
,
$i
,
1
))
>
0xa1
)
{
$tmpstr
.=
substr
(
$str
,
$i
,
2
);
$i
++
;
}
else
$tmpstr
.=
substr
(
$str
,
$i
,
1
);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
}
if
(
strlen
(
$tmpstr
)
>
$len
)
{
$len
--
;
return
substr_cn(
$str
,
$len
,
$start
);
}
return
$tmpstr
;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
-------------------------------------------------
//示例
echo
substr_cn(
"
123as中国PHP联盟
"
,
9
,
1
);
echo
"
<br>
"
;
echo
substr_cn(
"
123as中国PHP联盟
"
,
10
);
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
?>