layui-box layui-code-view" style="margin-top: 10px; margin-bottom: 10px; padding: 0px; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); white-space: pre-wrap; overflow-wrap: break-word; box-sizing: content-box; position: relative; font-size: 12px; border-width: 1px 1px 1px 6px; border-style: solid; border-color: rgb(226, 226, 226); border-image: initial; background-color: rgb(242, 242, 242); color: rgb(51, 51, 51); font-family: "Courier New";">code- <?php
- /*
- * 功用: 字符Unicode编码转换
- * 参数一: 要转码的字符串
- * 参数二: 能否转码ASCII字符 默许不转码
- *
- */
- function unicode_encode($string, $isAll = false){
- $string = iconv('UTF-8', 'UCS-2', $string); // 将字符编码转换为 UCS-2
- $strLen = strlen($string) - 1; // 获得字符长度
- $retStr = '';
- for ($i = 0; $i < $strLen; $i = $i + 2){
- $codeA = ord($string[$i]); // 取出第一位 字节
- $codeB = $string[$i+1]; // 取出第二位字符
- // 假如第一位字节大于0则暗示是扩大字符(汉字) 否则为 ASCII字符
- if($codeA > 0){
- $retStr.= '&#' . ($codeA * 256 + ord($codeB)) . ';';
- }else{
- // 判定ASCII字符能否转码
- $retStr.= $isAll ? '&#' . ord($codeB) . ';' : $codeB;
- }
- }
- return $retStr;
- }
- /*
- * 功用: Unicode编码转换字符
- * 参数一: 要转码的字符串
- * 参数二: 能否转码ASCII字符 默许不转码
- *
- */
- function unicode_decode($string){
- $pregStr = '/&#([0-9]+);/';
- // 停止婚配并在出错时返回
- if(preg_match_all($pregStr, $string, $codeList, PREG_OFFSET_CAPTURE) === false) return false;
- $retStr = '';
- $repOffset = 0;
- foreach ($codeList['1'] as $key => $value){
- // 大于255 则说明是2位字节 (汉字)
- $code = intval($value['0']); // 转换为整数
- // 假如大于255 则说明有两个字节
- $codeB = $code % 256; // 取第二个字节的内容
- if($code > 255){
- $codeA = ($code - $codeB) / 256; // 计较出第一个字节
- $newStr = chr($codeA) . chr($codeB); // 拼接成一个字符
- $newStr = iconv('UCS-2', 'UTF-8', $newStr); // 将字符编码转换为 UCS-2
- }else{
- $newStr = chr($codeB); // 拼接成一个字符
- }
- // 替换掉本来的内容
- $repLen = strlen($codeList['0'][$key]['0']);
- $repStart = $codeList['0'][$key]['1'];
- $string = substr_replace($string, $newStr, $repStart - $repOffset, $repLen);
- $repOffset+= $repLen - strlen($newStr);
- }
- return $string;
- }
- $str = '锄禾日当午,HanDi禾下土;举头望明月,12345...';
- // 停止编码
- $enStr = unicode_encode($str, true);
- echo $enStr . "\n";
- // 停止解码
- $deStr = unicode_decode($enStr);
- echo $deStr . "\n";
- ?>
|