php中ASCⅡ碼

來源:互聯網
上載者:User
簡介:這是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代碼還原字元。這個代碼寫好了有一段時間了,沒什麼時間把這些貼出來,大家可以看看,這個類不止 只是中文的轉換喲

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 ) . '
' ;
}

“php中ASCⅡ碼”的更多相關文章 》

愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具

http://biancheng.dnbcw.info/php/336623.html pageNo:10
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.