|-摘 PHP 中英文混排截取字符串 (用php自带的函数,简单效果又好)
在网上找了几种代码,测试了,这个是最好的,还是官方的函数mb_strwidth()和mb_strimwidth()厉害,O(∩_∩)O
最后找到了笔记合适的
我自己用php内置函数写了字符串截取函数
//根据PHP内置函数写的截取字符串函数 20220423 if ( ! function_exists('mb_str_cut')){ function mb_str_cut($str,$length=20,$tailTag='...') { if(mb_strwidth($str, 'utf8')>$length){ $str = mb_strimwidth($str, 0, $length, $tailTag, 'utf8'); } return $str; } }
O(∩_∩)O,20220423,下面是我参考的内容
转~~~~~由于网上版本太多,不知道谁是原版,so~不标地址了
mb_strwidth($str, $encoding) 返回字符串的宽度
$str 要计算的字符串
$encoding 要使用的编码,如 utf8、gbk
mb_strimwidth($str, $start, $width, $tail, $encoding) 按宽度截取字符串
$str 要截取的字符串
$start 从哪个位置开始截取,默认是0
$width 要截取的宽度
$tail 追加到截取字符串后边的字符串,常用的是 ...
$encoding 要使用的编码
下边给大家实例演示:
<?php /** * utf8 编码格式 * 1个中文占用3个字节 * 我们希望的是1个中文占用2个字节, * 因为从宽度上看2个英文字母占用的位置相当于1个中文 */ // 测试字符串 $str = 'aaaa啊啊aaaa啊啊啊aaa'; echo strlen($str); // 只用strlen输出为25个字节 // 必须指定编码,不然会使用php的内码 mb_internal_encoding()可以查看内码 // 使用mb_strwidth输出字符串的宽度为20使用utf8编码 echo mb_strwidth($str, 'utf8'); // 只有宽度大于10才截取 if(mb_strwidth($str, 'utf8')>10){ // 此处设定从0开始截取,取10个追加...,使用utf8编码 // 注意追加的...也会被计算到长度之内 $str = mb_strimwidth($str, 0, 10, '...', 'utf8'); } // 最后输出 aaaa啊... 4个a算4个 1个啊算2个 3个点算3个 4+2+3=9 // 是不是很简单啊,有的人说了为什么是9个不是10个吗? // 因为正好“啊”的后边还是“啊”,中文算2个,9+2=11 超出了设定,所以去掉1个就是9了
下边再给大家介绍一些其它函数吧: ...
浏览更多内容请先登录。
立即注册
更新于:2022-04-23 02:23:36
相关内容
PHP 和时间时区相关的函数
PHP向js传数组
phpmyadmin问题整理
phpmyadmin解决Failed to set session cookie. Maybe you are using HTTP...
phpmyadmin 登录报错 mysqli_real_connect(): (HY000/2002):
PhpMyAdmin 配置文件现在需要一个短语密码的解决方法
php7函数的数组参数,传递规律。
PHP与APP
PHP是否可以应用于App开发
推荐内容