php将文字转ASCII码值函数之ord和chr

通过ord()函数获取字符的ASCII码值,如果返回值大于 127则表示为中文字符的一半,再获取后一半组合成一个完整字符

$string = "hello不要迷恋哥world";
$string=iconv('utf-8', 'gbk', $string);////由于ord函数在gbk下单个中文长度为2,utf-8下长度为3
$length = strlen($string);
var_dump($string);//原始中文
var_dump($length);//长度

//把字符串转化为ascii码存入数组,如果是中文是由两个ASCII码组成,英文是一个
$result = array();
for($i=0;$i<$length;$i++){
    if(ord($string[$i])>127){
        $result[] = ord($string[$i]).' '.ord($string[++$i]);
    }else{
        $result[] = ord($string[$i]);
    }
}
var_dump($result);

$str = '';
foreach($result as $v){
    if(empty(strstr($v,' '))){
        $str .= chr($v);
    }else{
        list($a,$b) = explode(' ',$v);
        $str .= chr($a).chr($b);
    }
}
echo $str;

输出结果应该是

/www/demo.php:5:string 'hello不要迷恋哥world' (length=20)
/www/demo.php:6:int 20
/www/demo.php:17:
array (size=15)
  0 => int 104
  1 => int 101
  2 => int 108
  3 => int 108
  4 => int 111
  5 => string '178 187' (length=7)
  6 => string '210 170' (length=7)
  7 => string '195 212' (length=7)
  8 => string '193 181' (length=7)
  9 => string '184 231' (length=7)
  10 => int 119
  11 => int 111
  12 => int 114
  13 => int 108
  14 => int 100
hello不要迷恋哥world
最后修改时间为:2017 年 10 月 09 日 02 时 06 分 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论