点击链接加入群【php/web 学习课堂】:https://jq.qq.com/?_wv=1027&k=5UJ9vEa

欢迎大家加入,一起讨论学习

玩这个功能的时候,我们要注意一点,我们是用中文的,有时候还有一些数据,是英文+中文,所以我们中国程序猿是很苦逼的。光学个代码,还都是英文,对于我们这种爱国主义,特难受。。。

中文字符在PHP里,一个中文是占3个字符串的,给大家一个例子:

$sta='abc';      那我们打印看一下长度 echo  substr($sta) ;    会看到,长度是3

$sta='我';   换成中文,也能看到,一个中文打印 3

感谢参考:https://zhidao.baidu.com/question/233460627.html

以下是我处理过后的代码,做了一个小小的演示,给大家看看效果

  1. <?php
  2.  
  3. // header() 解决中文乱码
  4. header('Content-type:text/html;charset=utf-8');
  5.  
  6. //将一个中文转换成一个字符
  7. function abslength($str)
  8. {
  9. if(empty($str)){
  10. return 0;
  11. }
  12. if(function_exists('mb_strlen')){
  13. return mb_strlen($str,'utf-8');
  14. }
  15. else {
  16. preg_match_all("/./u", $str, $ar);
  17. return count($ar[0]);
  18. }
  19. }
  20. //从中文里提取字符
  21. function utf8_substr($str,$start=0) {
  22. if(empty($str)){
  23. return false;
  24. }
  25. if (function_exists('mb_substr')){
  26. if(func_num_args() >= 3) {
  27. $end = func_get_arg(2);
  28. return mb_substr($str,$start,$end,'utf-8');
  29. }
  30. else {
  31. mb_internal_encoding("UTF-8");
  32. return mb_substr($str,$start);
  33. }
  34.  
  35. }
  36. else {
  37. $null = "";
  38. preg_match_all("/./u", $str, $ar);
  39. if(func_num_args() >= 3) {
  40. $end = func_get_arg(2);
  41. return join($null, array_slice($ar[0],$start,$end));
  42. }
  43. else {
  44. return join($null, array_slice($ar[0],$start));
  45. }
  46. }
  47. }
  48.  
  49. //先放一堆数据,模拟一下从数据库里提取出来的
  50. $sta = array(
  51. 0=>array(
  52. 'title' => '点击链接加入群【php/web 学习课堂】:https://jq.qq.com/?_wv=1027&k=5645xiw'
  53. ),
  54. 1=>array(
  55. 'title' => '每个人都能成为强者,关键看你能否以强者的标准来严格要求自己'
  56. ),
  57. 2=>array(
  58. 'title' => '如果你失忆了,希望你能想起曾经为了追求梦想的你。'
  59. )
  60. );
  61.  
  62. //遍历数组
  63. foreach($sta as $k => $v){
  64. //判断长度
  65. if(abslength($v['title'])>25){
  66. //输出数据
  67. echo utf8_substr($v['title'],0,25).'...<br/><br/>';
  68. }else{
  69. echo $v['title'].'<br/><br/>';
  70. }
  71. }

php 限制标题长度,将一个中文转换成一个字符的更多相关文章

  1. [PHP] 算法-将一个字符串转换成一个整数的PHP实现

    题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一 ...

  2. JavaScript判断字符串的字符长度(中文占两个字符)

    判断方法 //判断字符串中的字符 中文算两个字符 function chkstrlen(str) { ; ; i < str.length; i++) { ) //如果是汉字,则字符串长度加2 ...

  3. iOS textfield限制长度,中文占2字符,英文占1字符

    之前遇到一种情况,限制textfield长度,并且要适配多语言,做到,例如中文占2字符,英文占1字符,还有考虑其他语言,网上找了很多方法,不太合适,最后结合网上的方案,修改出了还比较适用. 首先,增加 ...

  4. JS判断字符串长度(中文长度为2,英文长度为1)

    目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; ...

  5. C#汉字转拼音(npinyin)将中文转换成拼音全文或首字母

    汉字转拼音貌似一直是C#开发的一个难题,无论什么方案都有一定的bug,之前使用了两种方案. 1.Chinese2Spell.cs 一些不能识别的汉字全部转为Z 2.Microsoft Visual S ...

  6. http_build_query()就是将一个数组转换成url 问号?后面的参数字符串,并且会自动进行urlencode处理,及它的逆向函数

    http_build_query()就是将一个数组转换成url 问号?后面的参数字符串,并且会自动进行urlencode处理 例如: $data = array( 'foo'=>'bar', ' ...

  7. Java将一段逗号分割的字符串转换成一个数组

    String 类:String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是 ...

  8. double类型字符串转换成一个纯数字字符串和一个小数点位数的c++代码

    今天工作中遇到一个要不一个double型的字符串转换成一个纯字数字符串和一个标志这个数字字符串的小数点有几位的int类型 例如:“23.123”--->“23123” + 3   比较简单.就是 ...

  9. dedecms 修改标题长度可以修改数据库

    数据表为dede__archives 字段为title 首先要在 a.系统->系统基本参数->其它选项->文章标题长度 b.系统->SQL命令行工具 alter table # ...

随机推荐

  1. set serveroutput on

    使用set serveroutput on 命令设置环境变量serveroutput为打开状态,从而使得pl/sql程序能够在SQL*plus中输出结果 使用函数dbms_output.put_lin ...

  2. C++ STL nth_element

    #include <iostream>#include <algorithm>#include <deque> using namespace std; int m ...

  3. c++ for_each

    #include<iostream>#include<algorithm>#include<vector>using namespace std; int main ...

  4. 升级系统中的java到1.8版本

    (1).安装或升级java,并配置环境变量 注意:此处分为yum安装与rpm安装,区别在于yum安装省事但配置麻烦,rpm安装麻烦但配置省事. 1)yum安装 在安装前可以使用yum list ins ...

  5. DB2的web可视化客户端工具

    DB2 是IBM公司的产品,目前在银行等金融行业还在大量使用, DB2的客户端工具太,并且难用,这是一直为人所垢病的,  现在TreeSoft数据库管理系统已支持DB2了,直接在浏览器中就可以操作查看 ...

  6. 第二章 python之计算机基础

    @python基础 零基础就是个幌子,因为零基础什么都干不了. 如果零基础随随便便就把自动化做起来,那自动化测试就不值钱了:因为这种简单的事情,谁都可以做到. 本课程从零基础出发,补足基础后,不仅仅学 ...

  7. CentOS7.5安装GitLab及汉化

    一.GitLab英文版安装 1.下载gitlab安装包,然后安装 wget --content-disposition https://packages.gitlab.com/gitlab/gitla ...

  8. TCP/IP和OSI/RM以及协议端口

    TCP/IP:数据链路层:ARP,RARP网络层: IP,ICMP,IGMP传输层:TCP ,UDP,UGP应用层:Telnet,FTP,SMTP,SNMP. OSI:物理层:EIA/TIA-232, ...

  9. Java学习笔记-函数

    Java也有着函数的概念,不过在OOP中,函数用作方法称呼 函数的定义 函数就是定义在类中的具有特定功能的一段独立小程序 函数也称为方法 函数的格式 修饰符返回值类型函数名(参数类型形式参数1,参数类 ...

  10. 最新 完美世界java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.完美世界等10家互联网公司的校招Offer,因为某些自身原因最终选择了完美世界.6.7月主要是做系统复习.项目复盘.Leet ...