将一些字符串显示到页面中,规定不超过一定的长度。

先要获取到字符串的长度,strlen( )和mb_strlen( )两个函数可以获取,而这两个函数有有所不同<?php

//测试时文件的编码方式要是UTF8

$str='中文a字1符';

echo strlen($str).'
';//14

echo mb_strlen($str,'utf8').'
';//6

echo mb_strlen($str,'gbk').'
';//8

echo mb_strlen($str,'gb2312').'
';//10

?>

结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .

利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1)echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;

例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10.

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。

采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和 strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过 mb_internal_encoding()函数得到。

需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

获取到字符长度之后,超过部分就截取掉,用.去填充一些已表示被截取过,即可。if(mb_strlen($str)>200){

$newStr = mb_substr($str,0,60,"UTF8")."...";

}

mb_substr( )跟substr( )其实差不多,mb_substr( )用UTF8去计算,一个字就是一位,比较便于截取。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php页面上限制字符串长度,PHP如何限制字符串显示长度相关推荐

  1. JS全排列bug数组长度属性length和实际显示长度不相符

    @JS全排列bug数组长度属性length和实际显示长度不相符 function permutation(arr) {let arr1 = [].concat(arr);let result = [] ...

  2. 本页面上存在错误。Acrobat可能无法正确显示页面。请联系PDF文档的创建者来更正本页面上存在错误

    用acrobat 打开PDF文档提示"本页面上存在错误.--"         可能原因 一.pdf 文档没有使用 Acorbat 创建 二.pdf 修改者使用了与原 pdf 创建 ...

  3. 使用JavaScript实现在页面上所有内容加载完之前一直显示loading...页面

    Html 1 <body class="is-loading"> 2 <div class="curtain"> 3 <div c ...

  4. mysql 数据库时间类型 datetime 数据在页面上显示一串数字, 用函数date_format( )转换格式 ;

    mysql 数据库时间类型 datetime 转换格式 数据库时间字段datetime可以使用date_format( )函数进行时间的转换. 数据库时间字段类型: 数据库查询结果: 没转换前页面显示 ...

  5. 如何在WebPart中访问页面上的其他WebPart

    今天在和朋友讨论一个老外写的WebPart的时候,发现那个WebPart获取页面上的其他WebPart信息时,并不是通过标准的WebPart Connection,而是直接用代码来得到页面上另外那个W ...

  6. 将html字符串转换成html标签显示到页面上(转)

    转自:将html字符串转换成html标签显示到页面上 当我们将html字符串放到页面上时,是无法直接显示出我们想要的内容,这时我们需要将字符串转化成为html标签(必须保证html字符串的格式正确) ...

  7. java string最大长度_一个Java字符串中到底有多少个字符?

    作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...

  8. php获取字符串商都_php strlen获取字符串字节长度和mb_strlen获取字符串个数长度的区别(strlen获取中文长度)...

    strlen获取字符串字节长度和mb_strlen获取字符串个数长度的区别,如果字符串是数字或者英文字母组成的话,它们2个的结果上体现不出区别,可是如果字符串是汉字组成的话它们2个的结果差异很大 重点 ...

  9. 考虑长度、大小写的字符串对比

    考虑长度.大小写的字符串对比 问题描述 : 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4种情况之一: 1:两个字符串长度不等.比如 Beijing 和 H ...

  10. 数据库日期时间显示在页面上格式错误的解决方案

    做项目过程中肯定会碰到这样一个问题:在数据库中存的是date或datetime类型的值,从数据库里取出来遍历到页面上显示的是long类型或是GTM类型的日期时间. 对于这个问题,经过研究之后有以下结论 ...

最新文章

  1. 14 集成测试方法之自底向上集成方法
  2. 总结 | 一些关于 CPU 的基本知识
  3. Flex TextInput只允许输入数字等字符及字符数限制
  4. macd java 源代码_MACD交易系统原理、用法及源代码
  5. Spark _08窄依赖和宽依赖stage
  6. mysql的函数用途_MYSQL小函数大用途之-------FIND_IN_SET
  7. C#命名空间namespace中不能直接包含字段(变量)或方法(函数)之类的成员
  8. c++循环执行一个函数_Python—程序的循环结构
  9. [ARC061E]すぬけ君の地下鉄旅行 / Snuke's Subway Trip
  10. Ajax 浏览器跨域访问控制
  11. 低代码平台-竞品分析ABP框架
  12. usb大容量存储设备 被禁用 无法启动,彻底卸载大势至 【手贱,安装大势至USB接口软件后无法使用U盘】
  13. 【读书笔记】重新定义团队
  14. 【运动学】基于matlab EKF姿态估计【含Matlab源码 1638期】
  15. Android 通知栏Notification的整合
  16. android banner停止轮播,android如何实现banner轮播图无限轮播效果
  17. js修改服务器域名,春哥详解:业务域名 JS接口安全域名 网页授权域名
  18. oracle 表数据删除后恢复还原
  19. 18-Ansible常用模块-group模块
  20. 智能汽车发展战略-思维导图版本

热门文章

  1. CentOS 开机自启动脚本
  2. 基于网络抓包实现kubernetes中微服务的应用级监控
  3. “后 PC”时代,应用为王
  4. 函数09 - 零基础入门学习C语言40
  5. PowerShell2.0之Windows排错(一)启动故障排错
  6. 如何给一个二维数组动态分配内存
  7. WDF驱动中KMDF与UMDF区别
  8. 基于 Bochs 的操作系统内核实现
  9. golang中的shell
  10. C++标准类型库string