国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP函數篇之掌握ord()與chr()函數應用

2024-05-04 23:16:11
字體:
來源:轉載
供稿:網友
中文字符編碼研究系列第三期,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<$length;$i++){
if(ord($string[$i])>127){
$result[] = $string[$i].' '.$string[++$i];
}
}
var_dump($result);


代碼說明
1,定義一個變量$string,其值為字符串
2,獲取變量的長度(字節數)
3,打印變量和變量的長度
4,通過for循環獲取變量的各個字節值,把一個漢字的兩個字節中間用空格隔開顯示。
結果如下圖

PHP函數篇之掌握ord()與chr()函數應用}
}
var_dump($result);


如上代碼使用ord()函數打印各個字符的ASCII值,結果如下

PHP函數篇之掌握ord()與chr()函數應用}
}
var_dump($result);
foreach($result as $v){
$decs = explode(" ",$v);
echo chr($decs[0]).chr($decs[1]);
}


結果如下圖

PHP函數篇之掌握ord()與chr()函數應用



如上代碼并沒有直接輸出中文字符,但打印出正常的漢字,其原理是首先獲取各個字節的ASCII值,通過chr()函數轉化為字節,再把兩個字節組合起來就形成了一個完整的中文漢字。

通過對ord()與chr()函數的討論已經初步了解了中文字符的編碼原理,了解GBK編碼中一個漢字二個字節,使用ord()與chr()函數實現各字節轉換方法,請關注下一期中文字符編碼研究系列之中文字符編碼轉換原理。

參考資料
PHPWind與Discuz截取字符函數substrs與cutstr性能比較
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖西县| 商河县| 内黄县| 荣昌县| 互助| 天门市| 响水县| 吉木萨尔县| 德保县| 应城市| 綦江县| 黄冈市| 永定县| 东山县| 张家口市| 庆安县| 陇南市| 邻水| 红原县| 徐州市| 息烽县| 鄂托克旗| 迁西县| 通许县| 肃北| 海宁市| 昌乐县| 双峰县| 麟游县| 泽普县| 漾濞| 汉中市| 湘阴县| 磴口县| 托克托县| 泽库县| 绩溪县| 来凤县| 云浮市| 万山特区| 塔城市|