zoukankan      html  css  js  c++  java
  • php中ASCⅡ码

    简介:这是php中ASCⅡ码的详细页面,介绍了和php,有关的知识、技巧、经验,和一些php源码等。

    class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=336623' scrolling='no'>

    以前花了不少时间,找可以把中文转ascii码的php代码,utf-8也只是ascii的一种。后来中手册上找到 了个,把他改为了批量转换,还增加了一个常用的ascii代码还原字符。这个代码写好了有一段时间了,没什么时间把这些贴出来,大家可以看看,这个类不止 只是中文的转换哟

    <?php
    class ascii
    {

    function decode ( $str )
    {
    preg_match_all ( " /(d{2,5})/ " , $str , $a ) ;
    $a = $a [ 0 ] ;
    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 ;
    }

    function encode ( $c )
    {
    $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 .= " &# $ud ; " ;
    }
    return $scill ;
    }

    最近在技术群中有位兄弟提出了一个问题:

    想让自增的ID格式化为

    A001――A999

    B001――B999

    ……

    Z001――Z999,

    我最初的构思是循环中,分if条件判断出来进行A――Z字母,

    但是这样做有个极大的缺点,代码显得很呆板冗余,26个英文字母等于需要26个判断。

    后来有人支招将字母变成ASCⅡ码,恰好A――Z等于ASCⅡ码的65――91;

    这样就只需要一个函数进行格式化ID就可以了:

    function format_string( $num ) {
    $tag = floor (( $num - 1 ) / 999 );
    // part1计算asc码
    $part1 = 65 + $tag ;

    // part2计算数字部分
    $part2 = $num - 999 * $tag ;

    $a = strlen ( $part2 );

    for ( $i = 0 ; $i < ( 3 - $a ); $i ++ )
    {
    $b .= 0 ;
    }
    $str = chr ( $part1 ) . $b . $part2 ;
    return $str ;
    }

    for ( $i = 1 ; $i < 5000 ; $i ++ )
    {
    echo $str = format_string( $i ) . ' <br /> ' ;
    }

    “php中ASCⅡ码”的更多相关文章 》

    爱J2EE关注Java迈克尔杰克逊视频站JSON在线工具

    http://biancheng.dnbcw.info/php/336623.html pageNo:10
  • 相关阅读:
    Apple Swift编程语言入门中文教程
    WWDC 2014 Session 208/231 CloudKit 读书笔记
    微信开源项目解说使用公开课
    winform 实现彩票功能
    c#+windows api SetWindowsHookEx 全局钩子 demo 下载
    GPS-Graph Processing System Graph Coloring算法分析 (三)
    00105_UDP和TCP协议
    雷林鹏分享:jQuery EasyUI 表单
    雷林鹏分享:jQuery EasyUI 表单
    雷林鹏分享:jQuery EasyUI 表单
  • 原文地址:https://www.cnblogs.com/ooooo/p/2247892.html
Copyright © 2011-2022 走看看