php 限制标题长度,将一个中文转换成一个字符


点击链接加入群【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

 

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

 

 

<?php // header() 解决中文乱码
header('Content-type:text/html;charset=utf-8'); //将一个中文转换成一个字符
function abslength($str) { if(empty($str)){ return 0; } if(function_exists('mb_strlen')){ return mb_strlen($str,'utf-8'); } else { preg_match_all("/./u", $str, $ar); return count($ar[0]); } } //从中文里提取字符
function utf8_substr($str,$start=0) { if(empty($str)){ return false; } if (function_exists('mb_substr')){ if(func_num_args() >= 3) { $end = func_get_arg(2); return mb_substr($str,$start,$end,'utf-8'); } else { mb_internal_encoding("UTF-8"); return mb_substr($str,$start); } } else { $null = ""; preg_match_all("/./u", $str, $ar); if(func_num_args() >= 3) { $end = func_get_arg(2); return join($null, array_slice($ar[0],$start,$end)); } else { return join($null, array_slice($ar[0],$start)); } } } //先放一堆数据,模拟一下从数据库里提取出来的
$sta = array( 0=>array( 'title' => '点击链接加入群【php/web 学习课堂】:https://jq.qq.com/?_wv=1027&k=5645xiw' ),
    1=>array( 'title' => '每个人都能成为强者,关键看你能否以强者的标准来严格要求自己' ),
    2=>array( 'title' => '如果你失忆了,希望你能想起曾经为了追求梦想的你。' ) ); //遍历数组
foreach($sta as $k => $v){ //判断长度
    if(abslength($v['title'])>25){ //输出数据
        echo utf8_substr($v['title'],0,25).'...<br/><br/>'; }else{ echo $v['title'].'<br/><br/>'; } }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM