PHP中的chr函數(shù)可以將一個(gè)ASCII碼轉(zhuǎn)換成對應(yīng)的字符,例如chr(65)將會(huì)輸出字符A。然而在某些情況下,我們需要將Unicode編碼轉(zhuǎn)換成對應(yīng)的字符,這時(shí)候就需要用到chr函數(shù)的變形——unicode編碼的chr函數(shù),即:chr(int $codepoint)。
Unicode是一種全球通用的字符編碼標(biāo)準(zhǔn),它納入了幾乎所有語言中的字符,并將它們用16進(jìn)制數(shù)字來表示。例如:漢字“你”在Unicode標(biāo)準(zhǔn)下的編碼為U+4F60,轉(zhuǎn)換成10進(jìn)制就是20320。所以要輸出字符“你”,需要使用chr(0x4f60)或chr(20320)。
echo chr(0x4f60); //輸出“你”
echo chr(20320); //輸出“你”
除了Unicode編碼字符,chr函數(shù)還可以輸出一些特殊字符。例如常見的制表符、換行符、回車符等等。下表列出了chr函數(shù)輸出的一些特殊字符及其對應(yīng)的ASCII碼值。
字符 | ASCII碼值 | 描述 |
---|---|---|
\0 | 0 | 空字符(null) |
\t | 9 | 水平制表符(tab) |
\n | 10 | 換行符(line feed) |
\r | 13 | 回車符(carriage return) |
\x{hhhh} | --- | Unicode編碼16進(jìn)制表示形式 |
值得注意的是,如果要輸出Unicode字符的十六進(jìn)制形式,需要使用\x{hhhh}的格式,其中hhhh是Unicode編碼的十六進(jìn)制表示形式。
echo "\u4F60"; //這行會(huì)報(bào)錯(cuò),因?yàn)镻HP不支持這種語法。
echo "\x{4F60}"; //輸出“你”
除了chr函數(shù),還有一個(gè)將Unicode編碼轉(zhuǎn)換成字符的函數(shù)——mb_chr(int $codepoint, [string $encoding]),其中$encoding表示字符的編碼方式,默認(rèn)為UTF-8。
echo mb_chr(0x4f60); //輸出“你”
無論是chr函數(shù)還是mb_chr函數(shù),都可以將Unicode編碼轉(zhuǎn)換成對應(yīng)的字符。可以根據(jù)具體需求選擇不同的函數(shù)。