问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

[php]如何在PHP中截取中文字串无乱码

发布网友 发布时间:2022-04-26 21:19

我来回答

4个回答

懂视网 时间:2022-04-19 08:49

GBK编码截取示例

$str = '我是谁'; //gbk编码的字符串
echo mb_substr($str, 0, 1, 'gbk'); //输出 我

mb_substr方法比substr多一个参数,用来指定字符串编码。

utf-8编码截取示例

$str = '我abc是谁'; //utf-8编码的字符串
echo mb_substr($str, 0, 2, 'utf-8'); //输出 我a

中英混合也完全没有问题。

注意:

1、使用的时候要注意php文件的编码,和网页显示时的编码。

2、使用这个mb_substr方法要事先知道字符串的编码,如果不知道编码,就需要判断,mbstring库还提供了mb_check_encoding来检验字符串编码。

推荐教程:PHP视频教程

热心网友 时间:2022-04-19 05:57

一年前写的一个函数。用法与substr一样,支持中文。您也可以加以改进。
//截取字符串含数,对系统函数的改进,不会将中文变乱。
function mysubstr ($str,$start,$len=0,$cutchar="…") {
$str=str_replace(" ",' ',$str);
$str=str_replace("“",'“',$str);
$str=str_replace("”",'”',$str);
$str=str_replace("—",'—',$str);
$str=str_replace(""",'"',$str);
$str=str_replace(''',"'",$str);
$str=str_replace("<",'<',$str);
$str=str_replace(">",'>',$str);
$str=str_replace("&",'&',$str);
$str=preg_replace("/[\s]+/"," ",$str);
$tolen=strlen($str);
if(!($start==0 && $len>=$tolen)){
//为方便操作,先将起始值和长度值转换为正数
if($start<0)$start=$tolen+$start;if($start<0)$start=0;if($start>$tolen)return "";
if($len<=0)$len=($tolen+$len)-$start;if($len<1)return "";
if($len>$tolen)$len=$tolen;
for($i=0;$i<$start;$i++){
if(ord(substr($str,$i,1))>127){$i++;}
}
$start=$i; //起始位置计算完成
for($k=0;$k<$len;$k++,$i++){
if(ord(substr($str,$i,1))>127){$i++;$k++;}
}
$len=$k; //长度计算完成
$str=substr($str,$start,$len);
if($start>0){$str=$cutchar.$str;}
if($start+$len<$tolen){$str.=$cutchar;}
}
$str=str_replace("&",'&',$str);
$str=str_replace('"','"',$str);
$str=str_replace("'",''',$str);
$str=str_replace("<",'<',$str);
$str=str_replace(">",'>',$str);
return $str;
}

热心网友 时间:2022-04-19 07:15

只要截取的个数是双数就行了 中文是2个字节等于一个汉字长

热心网友 时间:2022-04-19 08:50

按照编码截取
$str = "心";
echo mb_substr($str,0,3,"UTF-8");追问$str,0,3,"UTF-8"); 这里面是什么意思,分别是

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 php 中文字符串截取问题 php 怎么截取汉字字符串? php关于截取中文字符串的问题 php 截取UTF-8中文字符串问题 我想知道上海嘉定区的建设银行有周六上班的么?工作时间是几点到几点?最好可以告诉我准确地址 十 word进程不退出,占用高CPU word2013关闭后仍残留进程占用大量CPU 打开word文档时cpu占用有多大 求助!!为什么我用WORD文档的时候特别占电脑CPU呢? 为什么打开word文档CPU使用率就会很高?占内存不大。所以应该不是中毒现象、、 WORD占用CPU 90%多 为何打开WORD后CPU占用率一直都在50%以上? 员工考勤管理系统 国内外发展状况 电脑的word每一次打开,后台都会有一个click to run占用cpu? 帮公司员工办就业登记信息时,系统出现此人在原单位存在未处理就业登记数据 word 文档占CPU内存大得很 上海招退工和劳动合同登记备案网上,输入好员工招工信息,确认后,却显示招工登记信息保存失败,为什么 为何我打开Word后CPU占用100%? 人事新手,怎样做员工基本情况登记表? 打开Word时CPU占用率过高怎么办 PHP截取中文字符问题 php中如何截取中文字符串 如何利用PHP来截取一段中文字符串而不出现乱码 php 怎么截取字符前面几个字符 广汽埃安Y疑似量产版实车曝光 造型回顾“理性” PHP指定截取字符串中的中英文或数字字符的实例分享 国产车越来越花哨了,你喜欢广汽埃安AIONY这款车吗? 荧光轮毂巨骚气,广汽Aion Y(埃安Y)亮相,多彩配色闪耀全场 php 截取两个中文字中间的字符串 怎么实现? 广汽埃安Y有几种车身颜色? 2020广州车展:抢先实拍广汽埃安Y 造型科幻/2021年正式上市 请问下php怎么处理截取字符串出现的乱码问题 广汽埃安全新SUV亮相广州车展,并正式命名为埃安Y php截取一段字符串中第一个出现的数字或字母或冒号前面的中文汉字的语... 号称“没有对手”?广汽埃安Y明年就能买 埃安y怎么关车 埃安y流量收费吗 广汽埃安y后排座椅怎么能翻起来 埃安y点烟器有吗? 埃安y白天怎么关闭尾灯