搜 索

php代码实现字符的ascii编码与解码的几种方式

编辑:QTOOL.NET日期:2019-10-0390

在使用php代码制作网站处理数据时,有时候会需要我们将字符转为ascii编码, 该怎样实现呢?

1、 字符串编码方式

function toascii( $str, $asciistrqz = '&#' ) {

  preg_match_all( '/./u', $str, $stranrz );

  $asciicode = "";

  foreach ( $stranrz[ 0 ] as $m ) {

    $asciicode .= $asciistrqz . base_convert( bin2hex( iconv( 'UTF-8', "UCS-4", $m ) ), 16, 10 );

  }

  return $asciicode;

}


使用方法

$str = "测试内容";

echo toascii( $str );


编码方式2:

function toascii( $str, $asciien = 'UTF-8', $asciistrqz = '&#', $asciistrhz = ';' ) {

  $str = iconv( $asciien, 'UCS-2', $str );

  $arrstr = str_split( $str, 2 );

  $asciicode = '';

  for ( $i = 0, $len = count( $arrstr ); $i < $len; $i++ ) {

    $dezfc = hexdec( bin2hex( $arrstr[ $i ] ) );

    $asciicode .= $asciistrqz . $dezfc . $asciistrhz;

  }

  return $asciicode;

}

其中变量$str为字符串, $asciien为字符串的编码, $asciistrqz为编码后每个字符的前缀,, $asciistrhz为编码后原来每个字符的间隔符 .


2、 ascii的解码方式1

function tostrzfc( $asciicode, $asciien = 'UTF-8', $asciistrqz = '&#', $asciistrhz = ';' ) {

  $zicarr = explode( $asciistrqz, $asciicode );

  $asciicode = '';

  for ( $i = 1, $len = count( $zicarr ); $i < $len; $i++ ) {

    if ( strlen( $asciistrhz ) > 0 ) {

      $zicarr[ $i ] = substr( $zicarr[ $i ], 0, strlen( $zicarr[ $i ] ) - strlen( $asciistrhz ) );

    }

    $lsszzf = intval( $zicarr[ $i ] );

    $asciicode .= ( $lsszzf < 256 ) ? chr( 0 ) . chr( $lsszzf ) : chr( $lsszzf / 256 ) . chr( $lsszzf % 256 );

  }

  iconv( 'UCS-2', $asciien, $asciicode );

  return $asciicode;

}


参数str为编码后的字符串, asciistrqz为编码字符的前缀, asciistrhz 编码字符串的后缀, 默认 ";"

2、 ascii的解码方式2

function tostrzfc( $str, $asciistrqz = "&#" ) {

  $str = str_replace( $asciistrqz, "", $str );

  $arr = explode( ";", $str );

  foreach ( $arr as $dezfc ) {

    if ( $dezfc < 128 ) {

      $zfcasc .= chr( $dezfc );

    } elseif ( $dezfc < 2048 ) {

      $zfcasc .= chr( 192 + ( ( $dezfc - ( $dezfc % 64 ) ) / 64 ) );

      $zfcasc .= chr( 128 + ( $dezfc % 64 ) );

    } else {

      $zfcasc .= chr( 224 + ( ( $dezfc - ( $dezfc % 4096 ) ) / 4096 ) );

      $zfcasc .= chr( 128 + ( ( ( $dezfc % 4096 ) - ( $dezfc % 64 ) ) / 64 ) );

      $zfcasc .= chr( 128 + ( $dezfc % 64 ) );

    }

  }

  return $zfcasc;

}


调用方法为:

$str = "编码后的字符串";

tostrzfc( $str, $asciistrqz = "&#" );

以上就是php实现ascii与字符串转换的几种方式, 当然除了使用代码转换字符编码还可以使用本站的字符编码解码工具来转换字符的编码内容 .

TAG标签:php字符处理编码转换
此文章由QTOOL.NET编辑
最新文章

热门标签