1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php使用mb_substr()解决中文字符串截取乱码问题

php使用mb_substr()解决中文字符串截取乱码问题

时间:2020-08-12 08:16:12

相关推荐

php使用mb_substr()解决中文字符串截取乱码问题

后端开发|php教程

php,mb_substr(),中文字符串

后端开发-php教程

PHP 自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。前者在处理中文时,GBK 为 2 个长度单位,UTF 为 3 个长度单位,后者指定编码后,一个中文即为 1 个长度单位。

百度联盟广告app源码,ubuntu设置挂载标签,僵尸爬虫有哪些,文章php,seo离职交接lzw

mb_substr用法

易语言短信发送源码,ubuntu文件进入目录,安装版tomcat 使用,分段视频爬虫,php保存视频到手机,seo 指南lzw

string mb_substr( string$str, int$start[, int$length[, string$encoding]] );

mb_substr 执行一个多字节安全的substr()操作基础上的字符数。从str的开始位置计算。第一个字符的位置为0。第二个字符的位置是1,依此类推:

ecshop微信通源码,vscode 多窗口,ubuntu终端新建文件命令,tomcat 7 7230,sqlite3 21,qq浏览器html5插件下载,支付宝 前端框架,python爬虫机器要求,php 发展前景,seo推广用什么seo,化妆品手机端网站模板,网页自动全屏播放视频代码,食品网站模板下载,订单管理页面,java成绩管理系统论文总结,人人商城小程序收不到短信lzw

str 被截取的母字符串。

start开始位置。

length 返回的字符串的最大长度,如果省略,则截取到str末尾。

encoding 参数为字符编码。如果省略,则使用内部字符编码。

那么我们可以使用一下的代码,来完成这个问题。

$mess=mb_substr($message,0,19,gb2312);

gb2312就是中文的编码格式。

mb_substr处理中英文混合字符串

substr 有时会截 1/3 个中文或半个中文,会显示乱码,相对来说 mb_substr 更适合我们使用。不过有时候 mb_substr 就显得不那么好用了。例如我要显示一个小图片的简要信息,5 个中文正好,超过 5 个就截取前4再加上 “…”,这样处理中文是没问题了,可是处理英文或数字,这样截取就太短了。使用下面这段函数则可以解决这个问题:

<?php/*** 字符串截取** @author gesion* @param string $str 原始字符串* @param int $len 截取长度(中文/全角符号默认为 2 个单位,英文/数字为 1。* 例如:长度 12 表示 6 个中文或全角字符或 12 个英文或数字)* @param bool $dot 是否加点(若字符串超过 $len 长度,则后面加 "...")* @return string*/class Onens { public static function g_substr($str, $len = 12, $dot = true) { $i = 0; $l = 0; $c = 0; $a = array(); while ($l = 224) {$c = 3;$t = substr($str, $i, $c);$l += 2; } elseif (ord($t) >= 192) {$c = 2;$t = substr($str, $i, $c);$l += 2; } else {$c = 1;$l++; } // $t = substr($str, $i, $c); $i += $c; if ($l > $len) break; $a[] = $t; } $re = implode(\, $a); if (substr($str, $i, 1) !== false) { array_pop($a); ($c == 1) and array_pop($a); $re = implode(\, $a); $dot and $re .= ...; } return $re; }}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。