PHP ASCII码与字符串的相互转换
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | <?php class ascii { /** * 将ascii码转为字符串 * @param type $str 要解码的字符串 * @param type $prefix 前缀,默认:&# * @return type */ function decode( $str , $prefix = "&#" ) { $str = str_replace ( $prefix , "" , $str ); $a = explode ( ";" , $str ); foreach ( $a as $dec ) { if ( $dec < 128) { $utf .= chr ( $dec ); } else if ( $dec < 2048) { $utf .= chr (192 + (( $dec - ( $dec % 64)) / 64)); $utf .= chr (128 + ( $dec % 64)); } else { $utf .= chr (224 + (( $dec - ( $dec % 4096)) / 4096)); $utf .= chr (128 + ((( $dec % 4096) - ( $dec % 64)) / 64)); $utf .= chr (128 + ( $dec % 64)); } } return $utf ; } /** * 将字符串转换为ascii码 * @param type $c 要编码的字符串 * @param type $prefix 前缀,默认:&# * @return string */ function encode( $c , $prefix = "&#" ) { $len = strlen ( $c ); $a = 0; while ( $a < $len ) { $ud = 0; if (ord( $c { $a }) >= 0 && ord( $c { $a }) <= 127) { $ud = ord( $c { $a }); $a += 1; } else if (ord( $c { $a }) >= 192 && ord( $c { $a }) <= 223) { $ud = (ord( $c { $a }) - 192) * 64 + (ord( $c { $a + 1}) - 128); $a += 2; } else if (ord( $c { $a }) >= 224 && ord( $c { $a }) <= 239) { $ud = (ord( $c { $a }) - 224) * 4096 + (ord( $c { $a + 1}) - 128) * 64 + (ord( $c { $a + 2}) - 128); $a += 3; } else if (ord( $c { $a }) >= 240 && ord( $c { $a }) <= 247) { $ud = (ord( $c { $a }) - 240) * 262144 + (ord( $c { $a + 1}) - 128) * 4096 + (ord( $c { $a + 2}) - 128) * 64 + (ord( $c { $a + 3}) - 128); $a += 4; } else if (ord( $c { $a }) >= 248 && ord( $c { $a }) <= 251) { $ud = (ord( $c { $a }) - 248) * 16777216 + (ord( $c { $a + 1}) - 128) * 262144 + (ord( $c { $a + 2}) - 128) * 4096 + (ord( $c { $a + 3}) - 128) * 64 + (ord( $c { $a + 4}) - 128); $a += 5; } else if (ord( $c { $a }) >= 252 && ord( $c { $a }) <= 253) { $ud = (ord( $c { $a }) - 252) * 1073741824 + (ord( $c { $a + 1}) - 128) * 16777216 + (ord( $c { $a + 2}) - 128) * 262144 + (ord( $c { $a + 3}) - 128) * 4096 + (ord( $c { $a + 4}) - 128) * 64 + (ord( $c { $a + 5}) - 128); $a += 6; } else if (ord( $c { $a }) >= 254 && ord( $c { $a }) <= 255) { //error $ud = false; } $scill .= $prefix . $ud . ";" ; } return $scill ; } } /* PHP 转 ASCII require_once "ascii_class.php"; */ $aa = new ascii; echo "<xmp>" ; echo $str = $aa ->encode( "PHP二次开发:www.php2.cc" ); echo "</xmp>" ; echo $aa ->decode( $str ); ?> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?