1. 程式人生 > >php計算中英文混合或中文字串的字數

php計算中英文混合或中文字串的字數

php的strlen和mb_strlen用於統計字元個數。中英文混合的字串中的中文字元則沒有統計進來。所以得自己另想方法統計中英文混合的字串的字數。以下是我的方法:
先用正則表示式把所有中文替換為空格,就可以用strlen()統計總字數了,總字數就是中文字數與英文字數的總和。
這裡的討論都是在utf-8編碼情況下。
統計中文字數並把所有中文替換為空格的正則表示式:

preg_replace(‘/[\x80-\xff]{3}/’, ‘ ‘, $str, -1);

上面的正則表示式基於這樣的假設:所以中文字元的utf-8都佔3個位元組。網上有人說:並不是所有utf-8中文都是3個位元組,在0080 – 07FF碼段為2位元組,在0800 – FFFF碼段為3位元組。那麼是不是用preg_replace(‘/[\x80-\xff]{1,3}/’, ‘ ‘, $str,-1)更合適?

歸結起來,統計字串中英文字數的示例:
$str = 'I am a 中國人!'; 
$str = preg_replace('/[\x80-\xff]{1,3}/', ' ', $str, -1); 
$num = strlen($str);

變數$num的值即為總字數,本例$num的值為11。這種做法,中文標點符號(所有中文特殊符號)也是算在內的。

相關推薦

php計算中英文混合中文字串字數

php的strlen和mb_strlen用於統計字元個數。中英文混合的字串中的中文字元則沒有統計進來。所以得自己另想方法統計中英文混合的字串的字數。以下是我的方法:先用正則表示式把所有中文替換為空格,就可以用strlen()統計總字數了,總字數就是中文字數與英文字數的總和

計算中英文混合字串長度,中文算兩個字元

獲取中英文字串長度是一個比較常用的功能,比如限制一個使用者暱稱、文章標題等的長度,一般從技術的角度考慮,不同的編碼中文所佔的位元組數不同,但從使用者的角度考慮他們根本不知道什麼是字符集,通常的習慣是一箇中文按兩個英文算。之前在網上看到的一個演算法是:$strlen = (s

PHP獲取中英文混合字符串的字數

UNC lse 混合 strlen sci 字符串 sub fun HP function ccStrLen($str) #計算中英文混合字符串的長度 { $ccLen=0; $ascLen=strlen($str); $ind=0; $hasCC=ereg("[xA1-x

PHP中文處理 中文字串擷取(mb_substr)和獲取中文字串字數

一、中文擷取:mb_substr()  mb_substr( $str, $start, $length, $encoding )  $str,需要截斷的字串  $start,截斷開始處,起始處為0  $length,要擷取的字數  $encodin

php擷取中英文混合字串

mb_strwidth($str, $encoding) 返回字串的寬度 $str 要計算的字串$encoding 要使用的編碼,如 utf8、gbk mb_strimwidth($str, $start, $width, $tail, $encoding) 按寬度擷取

php擷取中英文混合字串函式以及用法

function csubstr($string, $beginIndex, $length){ if(strlen($string) < $length){ return substr($string, $beginIndex); }

PHP獲取中英文混合字串長度及擷取

1.字串長度 PHP獲取中英文混合字串長度的實現程式碼如下,1中文=1位,2英文=1位,可自行修改 [php] /**  * PHP獲取字串中英文混合長度   * @param $str string 字串  * @param $$charset string 編碼

ASP如何計算中英文混合字串長度和擷取字串 .

計算中英文混合字串的長度: function getStringLen(str) on error resume next       dim l,c,i,tl=len(str)t=lfor i=1 to lc=asc(mid(str,i,1))if c>=128

iOS計算中英文混合字串長度的方法

-(NSUInteger) unicodeLengthOfString: (NSString *) text {NSUInteger asciiLength = 0;for (NSUInteger i = 0; i < text.length; i++)

strlen和mb_strlen區別(php獲得中英文混合字元長度)

<?php//測試時檔案的編碼方式要是UTF8$str='中文a字1符';echo strlen($str).'<br>';//14echo mb_strlen($str,'utf8').'<br>';//6echo mb_strlen($str

PHP 中英文混合排版中處理字串常用的函式

# 判斷某個位置是中文字元的左還是右半部分,或不是中文 # 返回值 -1 左 0 不是中文字元 1 右 # 用法 /* $a = 'this is 中文'; print is_chinese($a, 1); // 0 print is_chinese($a,8); // -1

PHP字串超長的中英文混合擷取

在網站的建設中,很多時候都會遇到文章標題超出分割槽限制的情況,這時候需要我們擷取超出的部分,把超出部分做省略處理,這樣使用者就可以點選連結跳轉再檢視詳情了。PHP自帶的函式也可以擷取字串,例如$str|substr=a,b;這樣可以擷取字串$str的從第a位開始的b個字串,

php計算中文字串長度、擷取中文字串

header('Content-type:text/html;charset=utf-8');/*** 可以統計中文字串長度的函式* @param $str 要計算長度的字串* @param $type 計算長度型別,0(預設)表示一箇中文算一個字元,1表示一箇中文算兩個字元**/function abs

根據中文姓名或者其他中英文混合字串獲取拼音首字母

<?php /** * Modified by fuyong @ 2015-09-13 * 修復二分法查詢方法 * 漢字拼音首字母工具類 * 注: 英文的字串:不變返回(包括數字) eg .abc123 => abc123 * 中文字串:返回拼音首字元 eg.

PHP擷取中英文字串長度

我們經常會遇到需要擷取字串(含中文漢字)長度的情況,比如標題顯示不能超過多少字元,超出的長度用…表示,以下函式可以滿足你的需求。 /* Utf-8、gb2312都支援的漢字擷取函式 cut_str(字串, 擷取長度, 開始長度, 編碼); 編碼預設為 utf-8 開始長度預設為

php多維陣列字串值字元替換

php多維陣列或字串值字元替換   解決方法: /**  * strReplace 多維陣列或字串值字元替換  * @param  String $find   

Java-基於百度API的圖片文字識別(支援中文,英文和中英文混合

PS: 基於Java 1.8 版本控制:maven 使用之前需要獲取對應的專案API_KEY,SECRET_KEY,這些引數在使用API的時候必須用到,

PHP中文字串轉化為英文首拼音首字母大寫

效果: 中國 =>ZG 中文轉化為英文首字母 中國:ZG ;中2國:ZG;z國:ZG 1:省略了數字(不轉化) 用法: $result =Character::getEnByCnByString(‘i是中國人’,3);//這邊的3為

Java-基於百度API的圖片文字識別(支援中文,英文和中英文混合)貨運APP開發找上海捌躍網路科技有限公司

PS: 基於Java 1.8 版本控制:maven 使用之前需要獲取對應的專案API_KEY,SECRET_KEY,這些引數在使用API的時候必須用到,用於生成access_token。 如何獲取這些引數:在百度開發者中心申請一個“通用文字識別”專案,然後就可

php擷取中文字串方法

/** * 擷取中文 * @param stirng $string 擷取內容 * @param int $sublen 擷取長度 * @param int $start 開始位置 * @param string $code 編碼方式 * @return stri