PHP 截取字符串后乱码的解决方案

今天遇到一个坑,左右调试坑的我一脸懵逼,当我们对一条字符串进行截取的时候,通常第一个想到的就是substr()函数了,但是如果是中文+数字的字符串的话,这时候使用substr进行截取就会出现乱码的问题,这是因为substr会把中文按照每个汉字三个字节进行截取,故而截取中文的时候并不适用,另外一个方法就是使用mb_substr()或者mb_strcut()函数进行截取,并设置截取后的编码格式为‘utf-8‘,使用这两个函数需要开启php.ini中php_mbstring.dll扩展,将前面的;去掉然后重启php-fpm,

$string = ‘下城区长浜路968号华盛达雷迪森广场酒店‘;

我先使用了mb_substr()函数,但是并没有解决我的问题,有的不乱码,有的还是乱码,也不知道网上那些说用这个函数就能解决的有没有遇到这个问题- -!

echo mb_substr($string,0,40,‘utf-8‘);

最后我又用了mb_strcut()函数,它的用法和mb_substr()是一样的,才算解决了这个问题:

mb_strcut($string,0,40,‘utf-8‘);

原文地址:https://www.cnblogs.com/52lnamp/p/9139068.html

时间: 2024-11-12 03:28:02

PHP 截取字符串后乱码的解决方案的相关文章

js怎样截取字符串后几位以及截取字符串前几位

想要截取字符串前几位与后几位,主要代码如下 截取字符串前几位 var disName ='开心一族漂亮家园'; var shortName = disName.substring(0,5); console.log(shortName);//打印结果:开心一族漂 截取字符串后几位 var disName ='开心一族漂亮家园'; var disLength = disName.length; var shortName = disName.substring(disLength-2,disLen

文章生成器,Split方法截取字符串。从硬盘读取文件,和向硬盘存储文件参考代码

string x, y; private void button2_Click(object sender, EventArgs e) { textBox2.Clear(); if (button4.Enabled == false) { string[] shuzu = y.Split(new char[]{'.'}); //用split方法截取字符串 string news = ""; // 将截取字符串后的语句打乱顺序 for (int i = 0; i < shuzu.L

python文件写入后读出空字符、读出乱码的解决方案

第一步 排除文件打开方式错误: r只读,r+读写不创建,w新建写,w+新建写创建,a附加,b二进制文件 以w,w+的方式打开文件,会将文件内容清零 (以w方式打开,不能读出.w+可读写) 以r,r+的方式打开文件,不会清零 (r+:可读可写,若文件不存在,报错:w+: 可读可写,若文件不存在,创建) 以a,a+的方式打开文件,附加打开 (a:附加写方式打开:a+: 附加读写方式打开) 以 'U' 标志打开文件, 所有的行分割符通过 Python 的输入方法(例#如 read*() ),返回时都会

php截取中文字符串无乱码的方法

利用php内置方法mb_substr截取中文不乱码,使用起来非常简单 <?php $str = '我喜欢laravel or yii2'; echo mb_substr($str, 0, 1, 'utf8'); //输出 我 exit; mb_substr方法比substr多一个参数,用来指定字符串编码.utf-8编码截取示例 $str = '我like laravel or yii2'; echo mb_substr($str, 0, 2, 'utf8'); //输出 我I 中英混合也完全没有

无乱码截取字符串,中英文混合(转)

//无乱码截取字符串,中英文混合 function left($str, $len, $charset="utf-8"){ //如果截取长度小于等于0,则返回空 if( !is_numeric($len) or $len <= 0 ){ return ""; } //如果截取长度大于总字符串长度,则直接返回当前字符串 $sLen = strlen($str); if( $len >= $sLen ){ return $str; } if ( strtol

SpringMVC Ajax请求时返回json中文字符串的乱码问题的解决方案

1.org.springframework.http.converter.StringHttpMessageConverter类是处理请求或相应字符串的类,并且默认字符集为ISO-8859-1,所以在当返回json中有中文时会出现乱码. 2.StringHttpMessageConverter的父类里有个List<MediaType> supportedMediaTypes属性,用来存放StringHttpMessageConverter支持需特殊处理的MediaType类型,如果需处理的Me

解决AES算法CBC模式加密字符串后再解密出现乱码问题

问题 在使用 AES CBC 模式加密字符串后,再进行解密,解密得到的字符串出现乱码情况,通常都是前几十个字节乱码: 复现 因为是使用部门 cgi?AESEncryptUtil 库,找到问题后,在这里复现不太方便,这里使用 python 进行复现,可以方便复现. #!/usr/bin/env python #coding=utf-8 from Crypto.Cipher import AES ? PADDING = '\0' if __name__ == "__main__":? ?

jsp 页面 摘要, 要截取字符串 ,当时 字符串中包含 html标签,截取后无法显示

如题: 处理办法: 1.  使用struts标签 <s:property  value ="#text.replaceAll('<[^>]+>','').substring(0,77)" escape="false"/> 过滤掉所有 标签 2. 使用 js var div = document.getElementById('div'); div.innerHTML = '<div>aaa<span>bbb<

php截取字符串,解决乱码问题与html标签问题

public function f截取字符串($str,$start,$len) {//$str是指字符串,$start指字符串的起始位置,$len指字符串长度 $len=$len*3; $strlen=$start+$len; //用$strlen存储字符串的总长度 $tmpstr=''; for($i=0;$i<$strlen;$i++) { if(ord(substr($str,$i,1))>0xa0) { //如果字符串中出现汉字,也就是ASC码大于0xa0的.作出判断与英文字符不一样