• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php中ASCⅡ码

php 搞代码 4年前 (2022-01-23) 11次浏览 已收录 0个评论

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

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

以前花了不少时间,找可以把中文转ascii码的php代码,本¥文来源gaodai$ma#com搞$代*码*网(搞代gaodaima码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 ) . ‘
‘ ;
}

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

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

http://biancheng.dnbcw.info/php/336623.html pageNo:10


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php中ASCⅡ码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址