php中文字數
❶ php 如何實現限制顯示 字數 ············急求!!!!
估計你是用 substr 直接截取字元的,如果是英文與數字組合還好,如果是中文就會出現你上面的方框。在PHP中一個英文或者數字算一位,而漢字算三位(具體你可以使用 strlen 試試看)。比如有一個漢字,你截取一位,還有兩位就丟失了,從而造成顯示方框。你可以自己寫個函數來計算應該截取多少位(網上有相應方法),循環整個字元串,如果是字母或者數字算一位,漢字或者全形符號算三位。然後輸出正確的截取長度。
有一個方法沒這么麻煩的,不知道是否使用smarty,如果是那就可以直接使用他裡面的函數 truncate 比如 {$goods.goods_name|truncate:10} 這樣只顯示10位,後面的不顯示並自動加上省略號。
祝你成功!
❷ PHP如何統計中文字數
mt_strlen()
❸ php截取字元串之截取utf8或gbk編碼的中英文字元串示例
php中自帶strlen是返回的位元組數,對於utf8編碼的中文返回時3個,不滿足需求,下面給大家提供一個方法來完成這樣的功能
微博的發言有字數限制,其計數方式是,中文算2個,英文算1個,全形字元算2個,半形字元算1個。
php中自帶strlen是返回的位元組數,對於utf8編碼的中文返回時3個,不滿足需求。
mb_strlen
可以根據字元集計算長度,比如utf8的中文計數為1,但這不符合微博字數限制需求,中文必須計算為2才可以。
google了下,找到一個discuz中截取各種編碼字元的類,改造了下,已經測試通過.其中參數$charset
只支持gbk與utf-8。
代碼如下:
$a
=
"s@@你好";
var_mp(strlen_weibo($a,'utf-8'));
結果輸出為8,其中字母s計數為1,全形@計數為2,半形@計數為1,兩個中文計數為4。源碼如下:
代碼如下:
function
strlen_weibo($string,
$charset='utf-8')
{
$n
=
$count
=
0;
$length
=
strlen($string);
if
(strtolower($charset)
==
'utf-8')
{
while
($n
<
$length)
{
$currentByte
=
ord($string[$n]);
if
($currentByte
==
9
||
$currentByte
==
10
||
(32
<=
$currentByte
&&
$currentByte
<=
126))
{
$n++;
$count++;
}
elseif
(194
<=
$currentByte
&&
$currentByte
<=
223)
{
$n
+=
2;
$count
+=
2;
}
elseif
(224
<=
$currentByte
&&
$currentByte
<=
239)
{
$n
+=
3;
$count
+=
2;
}
elseif
(240
<=
$currentByte
&&
$currentByte
<=
247)
{
$n
+=
4;
$count
+=
2;
}
elseif
(248
<=
$currentByte
&&
$currentByte
<=
251)
{
$n
+=
5;
$count
+=
2;
}
elseif
($currentByte
==
252
||
$currentByte
==
253)
{
$n
+=
6;
$count
+=
2;
}
else
{
$n++;
$count++;
}
if
($count
>=
$length)
{
break;
}
}
return
$count;
}
else
{
for
($i
=
0;
$i
<
$length;
$i++)
{
if
(ord($string[$i])
>
127)
{
$i++;
$count++;
}
$count++;
}
return
$count;
}
}
❹ PHP怎麼統計文章字數
很多人可能會用strlen函數,但是統計中文字元和英文字元的時候是會有出入的。
給你一個我自己寫的自定義函數,可完整統計中英文,每個中文或英文佔一個。
<?php
functionutf8_strlen($string=null){
preg_match_all("/./us",$string,$match);
returncount($match[0]);
}
echoutf8_strlen("網路是一部內容開放、自由的網路網路全書(ke..com),旨在創造一個涵蓋所有領域知識,服務所有互聯網用戶的中文知識性網路全書。在這里你可以參與詞條編輯,分享貢獻你的知識。他們以分享知識、協作編輯為共同信仰,是網路用戶的中堅力量,內容合作秒懂網路(qtfyfl.com)網路TA說數字博物館非遺網路影視合作。");
?>
代碼不多就那麼一點點,可以親自測試一下。
❺ php如何統計資料庫content欄位的字數
先吧數據從資料庫讀出來,然後用php的字元長度來統計就可以了。
在統計的時候記得要先去除空白,換行,回車等。
如果是英文文章,直接用strlen()即可,如果是中文文章用mt_strlen()方法;
❻ PHP限制字數的輸出急急急!!!
因為你從資料庫里讀出來的時候
<
就等於
<所以你讀出來是這個樣子的然後你在匹配SUBSTR函數看看你輸出的是21個字元串那麼你把<這個算成4個字元然後其他的按正常為數讀的就是21個了呵呵
❼ 怎麼控制php中新聞標題的字數
控制長度當然是字元串截取了,不過這個不是在大型網站中最好的處理方法,因為截取後的不完整標題無法表達文章的大意,一般都是有一個ShortTitle由編輯填寫,字數根據頁面需要由編輯來控制。 字元串截取的方法中當然是支持中文的最好,提供兩個給你參考。 /**
* @name substr_gbk
* @Desc 字元串截取函數,適用於GBK編碼的字元串
* @author 十月GG(TaoShuChen)
* @param $str String 目標字元串
* @param $length int 所需截取的長度
* @param $other String 是否添加後綴
* @return $rstr String 截取後的字元串
*/
function substr_gbk($str,$length=10,$other='...') {
for($i=0,$j=0;$i<$length;$i++){
if(ord(substr($str,$i,1))>0xa0){
$j++;
}
}
if($j%2!=0) $length++;
$rstr=substr($str,0,$length);
if (strlen($str)>$length && !empty($other)) {
$rstr.= $other;
}
return $rstr;
} /**
* @name substr_utf8
* @Desc 字元串截取函數,適用於UTF8編碼的字元串
* @author 十月GG(TaoShuChen)
* @param $str String 目標字元串
* @param $start int 開始位置
* @param $length int 所需截取的長度
* @param $other String 是否添加後綴
* @return $result String 截取後的字元串
*/function substr_utf8($str, $start=0, $length=10, $other='...') {
$pa="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|";
$pa.="\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $str, $t_string);
if(count($t_string[0]) - $start > $length && !empty($other)) {
return $result = implode('', array_slice($t_string[0], $start, $length)) . $other;
} else {
return $result = implode('', array_slice($t_string[0], $start, $length));
}
}