首頁 >後端開發 >php教程 >PHP中 strlen() 與 mb_strlen() 的比較

PHP中 strlen() 與 mb_strlen() 的比較

不言
不言原創
2018-04-20 12:13:201712瀏覽

這篇文章介紹的內容是關於PHP中strlen() 和mb_strlen() 的比較 ,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

這篇文章是部落客原創,如轉載請註明出處。

首先看一下官方文件是怎麼說的;

strlen()-用來取得字串長度



int strlen    ( #string $ string   )

  傳回給定的字串string 的長度。    

mb_strlen取得字串的長度


##mb_strlen    ( string $str[, string $encoding = mb_internal_encoding()  ] )

  取得一個string 的長度。

str:要檢查長度的字串

encoding:encoding參數為字元編碼。如果省略,則使用內部字元編碼。


注意:strlen()函數無法正確處理中文字串,它得到的只是字串所佔的位元組數,

          在strlen(),編碼為GB2312,一個漢字佔2個位元組。編碼為utf-8的話,一個漢字佔3個位元組。

          但是,

#        在mb_strlen()中,編碼為utf-8的話,一個漢字輸出的長度是1.


11程式碼幫助理解:

<?php
	header("Content-type:text/html;charset=utf-8");
	
	echo "关于字符串你长度获取的测试"."<br />";
	
	$_str_y = "hello";
	$_str_c = "你好";
	
	//strlen()
	echo "strlen()输出hello的长度".strlen($_str_y)."<br />";
	echo "strlen()输出&#39;你好&#39;的长度".strlen($_str_c)."<br />";
	/**
	 * 输出:
	 * strlen()输出hello的长度5
	 * strlen()输出&#39;你好&#39;的长度6
	 */
	
	//mb_strlen()
	echo "mb_strlen( 不指定字符编码 )输出hello的长度".mb_strlen($_str_y)."<br />";
	echo "mb_strlen( 不指定字符编码 )输出&#39;你好&#39;的长度".mb_strlen($_str_c)."<br />";	
	/**
	 * mb_strlen( 不指定字符编码 )输出hello的长度5
	 * mb_strlen( 不指定字符编码 )输出&#39;你好&#39;的长度6
	 */
	
	//mb_strlen()
	echo "mb_strlen( utf-8 )输出hello的长度".mb_strlen($_str_y,&#39;utf-8&#39;)."<br />";
	echo "mb_strlen( utf-8 )输出&#39;你好&#39;的长度".mb_strlen($_str_c,&#39;utf-8&#39;)."<br />";
	
	/**
	 * 输出:
	 * mb_strlen( utf-8 )输出hello的长度5
	 * mb_strlen( utf-8 )输出&#39;你好&#39;的长度2
	 */
	
	
?>

注意: mb_strlen並不是PHP核心函數,使用前需要確保在php.ini中載入了php_mbstring.dll,也就是確保「extension=php_mbstring.dll」這一行存在並且沒有被註解掉,否則會出現未定義函數的問題。 ###############相關推薦:################php中抽象類別和介面的差異########## ##########

以上是PHP中 strlen() 與 mb_strlen() 的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn