九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
PHP實(shí)現(xiàn)中文漢字與16進(jìn)制編碼轉(zhuǎn)換

<?php   
/**  
 * 把一個(gè)漢字轉(zhuǎn)為unicode的通用函數(shù),不依賴任何庫(kù),和別的自定義函數(shù),但有條件  
 * 條件:本文件以及函數(shù)的輸入?yún)?shù)應(yīng)該用utf-8編碼,不然要加函數(shù)轉(zhuǎn)換  
 * 其實(shí)亦可輕易編寫反向轉(zhuǎn)換的函數(shù),甚至不局限于漢字,奇怪為什么PHP沒(méi)有現(xiàn)成函數(shù)  
 * @author xieye  
 *  
 * @param {string} $word 必須是一個(gè)漢字,或代表漢字的一個(gè)數(shù)組(用str_split切割過(guò))  
 * @return {string} 一個(gè)十進(jìn)制unicode碼,如4f60,代表漢字 “你”  
 *  
 * @example  
    echo "你 ".getUnicodeFromOneUTF8("你");  
    echo "<br />";  
    echo "好 ".getUnicodeFromOneUTF8("好");  
    echo "<br />";  
    echo "你好 ".getUnicodeFromOneUTF8("你好");  
    echo "<br />";  
    echo "你好嗎 ".getUnicodeFromOneUTF8("你好嗎");  
    你 20320  
    好 22909  
    你好 251503099357000  
    你好嗎 4.21952182258E+21  
 */  
function getUnicodeFromOneUTF8($word) {   
    //獲取其字符的內(nèi)部數(shù)組表示,所以本文件應(yīng)用utf-8編碼!   
    if (is_array( $word))   
        $arr = $word;   
    else  
        $arr = str_split($word);   
    //此時(shí),$arr應(yīng)類似array(228, 189, 160)   
    //定義一個(gè)空字符串存儲(chǔ)   
    $bin_str = '';   
    //轉(zhuǎn)成數(shù)字再轉(zhuǎn)成二進(jìn)制字符串,最后聯(lián)合起來(lái)。   
    foreach ($arr as $value)   
        $bin_str .= decbin(ord($value));   
    //此時(shí),$bin_str應(yīng)類似111001001011110110100000,如果是漢字"你"   
    //正則截取   
    $bin_str = preg_replace('/^.{4}(.{4}).{2}(.{6}).{2}(.{6})$/','$1$2$3', $bin_str);   
       
    //此時(shí), $bin_str應(yīng)類似0100111101100000,如果是漢字"你"   
    return bindec($bin_str);   
    //返回類似20320, 漢字"你"   
    //return dechex(bindec($bin_str));   
    //如想返回十六進(jìn)制4f60,用這句   
}   
echo "你 ".getUnicodeFromOneUTF8("你");   
echo "<br />";   
echo "好 ".getUnicodeFromOneUTF8("好");   
echo "<br />";   
echo "你好 ".getUnicodeFromOneUTF8("你好");   
echo "<br />";   
echo "你好嗎 ".getUnicodeFromOneUTF8("你好嗎");   
exit;   
  
?>  

 

方法一

<?php
//漢字轉(zhuǎn)換為16進(jìn)制編碼
function hexEncode($s) {
    return preg_replace('/(.)/es',"str_pad(dechex(ord('\\1')),2,'0',STR_PAD_LEFT)",$s);   
}

//16進(jìn)制編碼轉(zhuǎn)換為漢字
function hexDecode($s) {
    return preg_replace('/(\w{2})/e',"chr(hexdec('\\1'))",$s);
}
echo hexDecode(hexEncode("北京歡迎您!"));
?>

——————————————————————————————————————————

方法二

echo rawurlencode("北京歡迎您").'<br>';

返回字符串,此字符串中除了 -_. 之外的所有非字母數(shù)字字符都將被替換成百分號(hào)(%)后跟兩位十六進(jìn)制數(shù)。

解碼用:rawurldecode

——————————————————————————————————————————

方法三及原理

GBK版:

GBK編碼中一個(gè)漢字由二個(gè)字符組成,

通過(guò)ord()函數(shù)獲取字符的ASCII值如果大于127時(shí),就可以確定當(dāng)前字符為一個(gè)漢字的前半部分,還需要獲取漢字的后半部分。當(dāng)然,這種判斷的方法要結(jié)合具體的開(kāi)發(fā)環(huán)境,如果存在ASCII值大于127的單個(gè)字符,這種方法判斷顯然就不正確。

PHP實(shí)現(xiàn)中文字符轉(zhuǎn)十進(jìn)制的原理就是通過(guò)for循環(huán)的方法獲取一個(gè)漢字的二個(gè)字符,然后使用ord()函數(shù)把各字符轉(zhuǎn)換為十進(jìn)制。如上分別是:不 [178 187] 要 [210 170] 迷 [195 212] 戀 [193 181] 哥 [184 231]

PHP 實(shí)現(xiàn)中文字符轉(zhuǎn)十六進(jìn)制的原理就是首先使用ord()函數(shù)取出各個(gè)中文字符的十進(jìn)制,具體可查看[PHP函數(shù)篇掌握ord()與chr()函數(shù)應(yīng)用],然后使用dechex()函數(shù)把各個(gè)中文字符轉(zhuǎn)化為十六進(jìn)制

$string = "北京歡迎您!";
$length = strlen($string);
echo $string;
$result = array();
//十進(jìn)制
for($i=0;$i<$length;$i++){
if(ord($string[$i])>127){
$result[] = ord($string[$i]).' '.ord($string[++$i]);
}
}
var_dump($result);
echo '<br>';
//十六進(jìn)制
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = dechex($dec[0])." ".dechex($dec[1]);
}
var_dump($strings);

 

UTF-8版:

$string = "北京歡迎您!";
$length = strlen($string);
echo $string;
$result = array();
//十進(jìn)制
for($i=0;$i<$length;$i++){
if(ord($string[$i])>127){
$result[] = ord($string[$i]).' '.ord($string[++$i]).' '.ord($string[++$i]);
}
}
var_dump($result);
echo '<br>';
//十六進(jìn)制
$strings = array();
foreach($result as $v){
$dec = explode(" ",$v);
$strings[] = dechex($dec[0])." ".dechex($dec[1])." ".dechex($dec[2]);
}
var_dump($strings);

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
封裝一個(gè)可以換行的dump函數(shù)
PHP nl2br函數(shù) 將換行字符轉(zhuǎn)成 <br>
Delphi版的Base64轉(zhuǎn)換函數(shù)
收集了php中截取字符串函數(shù)
PHP函數(shù)篇之掌握ord()與chr()函數(shù)應(yīng)用
【函數(shù)分享】每日PHP函數(shù)分享(2021-1-12)
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服