PHP函式篇之掌握ord 與chr 函式應用

2021-07-16 17:48:27 字數 1932 閱讀 4323

ord()函式把字元轉換為十進位制數字,chr()函式把十進位制數字轉化為字元,在二進位制,八進位制,十進位制與十六進製制之間充當橋梁的作用

中文字元編碼研究系列第三期,php函式篇掌握ord()與 chr()函式應用,上期[php基礎篇詳解ascii碼對照表與字元轉換]一文中了解了ascii碼和字元轉換的方法,但使用時發現在字元轉換之間需要兩個特殊的函式,用於字元與十進位制之間的轉換,ord()函式把字元轉換為十進位制數字,chr()函式把十進位制數字轉化為字元,在二進位制,八進位制,十進位制與十六進製制之間充當橋梁的作用。

一,ord()函式的應用

ord()函式用於返回乙個字元的ascii值,最基本的用法如獲取a 的ascii值ord('a')返回 97,但在實際開發中,應用最多的還是用於字元擷取函式中獲取中文字元高低位編碼的十進位制數,如常見的中文字元擷取函式具體可看看phpwind或 discuz!論壇源**中substrs()函式或cutstr()函式,其原理就是通過ord()函式獲取字元的ascii碼值,如果返回值大於 127則表示為中文字元的一半,再獲取後一半組合成乙個完整字元,同時結合字元編碼如gbk或utf-8等。

以gbk編碼為例利用ord()函式判斷中文字元返回各中文字元的ascii值,**如下 

$string = "不要迷戀哥"; 

$length = strlen($string); 

var_dump($string);//原始中文 

var_dump($length);//長度 

$result = array(); 

for($i=0;$i

} var_dump($result); 

**說明 

1,定義乙個變數$string,其值為字串 

2,獲取變數的長度(位元組數) 

3,列印變數和變數的長度 

4,通過for迴圈獲取變數的各個位元組值,把乙個漢字的兩個位元組中間用空格隔開顯示。

結果如下圖

**:「不要迷戀哥」為5個漢字,共10個位元組(乙個漢字2個位元組),分別列印各個位元組無法正常顯示如上圖

初始值不變修改for迴圈部分**顯示各個位元組ascii值

$result = array(); 

for($i=0;$i

} var_dump($result); 

如上**使用ord()函式列印各個字元的ascii值,結果如下 

通過ord()函式轉換後就能正常檢視各個字元的ascii值。 

二,chr()函式的應用

chr()函式的作用與ord()函式相反,用於返回指定的字元,如chr(97)返回a。 

結合上面例項,只要獲取到中文字元的ascii值,就可以通過chr()函式組裝出中文字元,**如下 

$string = "不要迷戀哥"; 

$length = strlen($string); 

var_dump($string);//原始中文 

var_dump($length);//長度 

$result = array(); 

for($i=0;$i

} var_dump($result); 

foreach($result as $v) 

結果如下圖 

如上**並沒有直接輸出中文字元,但列印出正常的漢字,其原理是首先獲取各個位元組的ascii值,通過chr()函式轉化為位元組,再把兩個位元組組合起來就形成了乙個完整的中文漢字。 

參考資料 

phpwind與discuz擷取字元函式substrs與cutstr效能比較

PHP函式篇之掌握ord 與chr 函式應用

中文字元編碼研究系列第三期,php函式篇掌握ord 與 chr 函式應用,上期 php基礎篇詳解ascii碼對照表與字元轉換 一文中了解了ascii碼和字元轉換的方法,但使用時發現在字元轉換之間需要兩個特殊的函式,用於字元與十進位制之間的轉換,ord 函式把字元轉換為十進位制數字,chr 函式把十進...

php學習基礎篇之自定義函式

知識點 一 自定義函式 二 變數的引用傳值 一 自定義函式 數學 字串 陣列 日期 1 函式 系統函式 數學 字串 陣列 日期 自定義函式 2 自定義函式 以後的 函式 流程語句等 封裝自己的函式。function 函式名稱 引數 預設值 引數 預設值 引數 預設值 1 無引數 無返回 函式中 不會...

C 篇之預設引數與函式過載

預設引數的函式 1 呼叫函式時可以不指定全部引數 2 為可以不指定的引數提供預設值 void func int a 1,int b int c 3,int d 4 error void func int a int b int c 3,int d 4 ok void func int int int...