PHP实现中文字符串截取无乱码
了解中文字节
ASCII码: 一个中文汉字占两个字节的空间。
UTF-8编码: 一个中文(含繁体)等于三个字节。
Unicode编码:一个中文(含繁体)等于两个字节。
我们写页面基本都是utf-8编码
一、substr截取
<?php
echo substr("PHP中文网",0,5);?>
substr:返回字符串子串
substr( ) 第一个参数是要截取的字符串,第二个参数表示从0位置开始截取,第三个参数表示截取的长度。
结果:
PHP�
说明,substr是按着字节数进行截取的,所以出现乱码。
二、mb_substr截取
<?php
echo mb_substr("PHP中文网",0,5);?>
结果:
PHP中文
说明,mb_substr是按着字符数来截取的,所以结果正常
三、mb_strcut截取
<?php
echo mb_strcut("PHP中文网",0,7);?>
结果:
PHP中
说明,mb_strcut也是按着字节数截取的,且截取后不会出现乱码,多出的字节并不显示。
所以,可以用mb_substr( )和mb_strcut( )进行字符截取,且无乱码。
四、substr_replace替换
说明,将字符串的一部分插入或替换为另一部分,substr_replace( )函数使用也会有乱码出现,建议用mb_substr截取,再用连接字符串解决。
语法: substr_replace(string,replacement,start,length);
<?php
echo substr_replace("Hello world","Shanghai",-5,);?>
Hello Shanghai
第一个参数:原字符串
第二个参数:要替换的字符串
第三个参数:规定从字符串的何处开始替换,正数,负数,0
第四个参数:可选,规定从当前位置开始要替换的长度(默认从当前位置开始,全部替换)
正数:替换的长度
负数:待替换的字符串距离string结尾的个数
0:表示插入而非替换