點擊鏈接加入群【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/>'; } }