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:表示插入而非替换

<?php
echo substr_replace("Hello 上海","Shanghai",7);?>
Hello �Shanghai
=>
<?php
$string=mb_substr("Hello 上海",0,6);
echo $string.'Shanghai';?>
Hello Shanghai
posted @ 2020-09-28 17:09  以深  阅读(971)  评论(0编辑  收藏  举报
TOP