php使用strlen 判斷中文漢字字串長度

2022-07-18 03:21:15 字數 2499 閱讀 5208

用strlen()函式可以簡單模糊的判斷字元長度了,像如果你是漢字與拼音或編碼不一樣使用用strlen()函式計算出來的都不一樣,下面我來給大家介紹一下用strlen()函式的使用方法吧。

們經常會用到了解字串長度的時候,在php裡,可以使用strlen()函式來實現。使用方法如下:

php strlen() 函式定義和用法

strlen() 函式返回字串的長度。

語法strlen(string)

引數:string

描述:必需。規定要檢查的字串。

例項**如下

複製**

<?php

echo strlen("hello world!");

?>

輸出:12

那麼對於中文怎麼處理

php自帶的函式如strlen()、mb_strlen()都是通過計算字串所佔位元組數來統計字串長度的,乙個英文本元佔1位元組。例:

**如下

複製**

enstr = 『hello,china!』;

echo strlen($enstr); // 輸出:12

而中文則不然,做中文**一般會選擇兩種編碼:gbk/gb2312或是utf-8。utf-8能相容更多的字元,所以受到很多站長的喜愛。gbk與utf-8對中文的編碼不同,導致中文在gbk與utf-8編碼下所佔位元組也有差異。

gbk編碼下每個中文字元所佔位元組為2,例:

**如下

複製**

$zhstr = 『您好,中國!』;

echo strlen($zhstr); // 輸出:12

utf-8編碼下每個中文字元所佔位元組為3,例:

**如下

複製**

$zhstr = 『您好,中國!』;

echo strlen($zhstr); // 輸出:18

那麼如何計算這組中文字串的長度呢?有人可能會說gbk下獲取中文字串長度除以2,utf-8編碼下除以3不就行了嗎?但是您要考慮字串並不老實,99%的情況會以中英混合的情況出現。

這是wordpress中的一段**,主要思想就是先用正則將字串分解為個體單元,然後再計算單元的個數即字串的長度,**如下(只能處理utf-8編碼下的字串):

**如下

複製**

$zhstr = 『您好,中國!』;

$str = 『hello,中國!』;

// 計算中文字串長度

function utf8_strlen($string = null)

echo utf8_strlen($zhstr); // 輸出:6

echo utf8_strlen($str); // 輸出:9

下面是補充:準確計算字元個數和計算位元組數的區別

**如下

複製**

/假設當前頁面編碼為gbk

<?php

$str="中國abc";

echo strlen($str); //返回7,因為 gbk編碼每個中文兩個位元組,strlen是返回字串所佔的位元組長度。

echo "";

echo iconv_strlen($str,"gbk"); //返回5.iconv_strlen 是統計字串的字元數量

?>

或者這麼寫

<?php

$biaoti="中華人民共和國";

$zijie=strlen($biaoti);

echo $zijie."

"; //

換行?>

//假設當前頁面編碼為utf-8

<?php

$str="中國abc";

echo strlen($str); //返回9,因為 utf-8編碼每個中文三個位元組,strlen是返回字串所佔的位元組長度。

echo "";

echo iconv_strlen($str,"utf-8"); //返回5.iconv_strlen 是統計字串的字元數量

?>

iconv_strlen 是無論是何種編碼,均能計算準確字元個數。

//假設當前頁面編碼為gbk

<?php

$str="中國abc";

echo strlen($str); //返回7,因為 gbk編碼每個中文兩個位元組,strlen是返回字串所佔的位元組長度。

echo "";

echo iconv_strlen($str,"gbk"); //返回5.iconv_strlen 是統計字串的字元數量

?>

//假設當前頁面編碼為utf-8

<?php

$str="中國abc";

echo strlen($str); //返回9,因為 utf-8編碼每個中文三個位元組,strlen是返回字串所佔的位元組長度。

echo "";

echo iconv_strlen($str,"utf-8"); //返回5.iconv_strlen 是統計字串的字元數量

?>

iconv_strlen 是無論是何種編碼,均能計算準確字元個數。

php使用正則驗證中文

php用preg match來匹配並判斷乙個字串中是否含有中文或者都是中文的程式設計客棧方法如下 str php學習部落格 if preg match x7f xff str else if preg match x7f xff 程式設計客棧str else 程式設計客棧 以上程式的輸出的結果為 字...

php 中文相等 php判斷字串是否相等

同上,但是不區分大小寫 int strcasecmp string str1,string str2 按 自然排序 進行比較 int strnatcmp string str1,string str2 同上,但是不區分大小寫 int strnatcasecmp string str1,string ...

關於在判斷條件中使用strlen 函式的問題

在寫kmp演算法時,我寫了個這樣的條件判斷迴圈 while i strlen a j strlen s 這是錯的!然後出現了乙個百思不得其解的問題。當j 1時,直接跳出迴圈。查了半天才知道是函式問題。現在我們來看一下strlen函式原型。extern unsigned intstrlen char ...