PHP关于函数传中文值乱码的有关问题

php中文网
发布: 2016-06-13 13:27:36
原创
1093人浏览过

PHP关于函数传中文值乱码的问题
想做一个游戏激活码生成函数,写出来之后发现个问题:$str放中文进去的时候出现乱码,请问该怎么解决一下?

function set_randcode($str, $num, $len, $mark) {
  $strs_shuffle = str_shuffle((str_shuffle(strtoupper(trim($str))) . str_shuffle(strtoupper(trim($str))) . str_shuffle(strtoupper(trim($str)))));
  $code = Array();
  for ($i = 0; $i   $code[] = (substr("$strs_shuffle", mt_rand(0, (strlen($str) - $len)), $len) . $mark . substr("$strs_shuffle", mt_rand(0, (strlen($str) - $len)), $len) . $mark . substr("$strs_shuffle", mt_rand(0, (strlen($str) - $len)), $len) . $mark . substr("$strs_shuffle", mt_rand(0, (strlen($str) - $len)), $len));
  }
  $code = array_unique($code); //移除数组中重复的值
  $set_code = Array();
  for ($j = 0; $j   $set_code[] = $code[$j];
  }
  return $set_code;
}

小弟刚开始学习,希望能讲的浅显易懂些。

------解决方案--------------------
str_shuffle 的作用是将字符串打乱,操作是以字节为单位的
打乱后,原来相邻的字节,可能就不相邻了

一个汉字需要靠相邻的字节来表示,所需字节数依编码定(gbk 2字节、utf-8 3字节、等等)
原来相邻的变成不相邻的了,就出现了“乱码”
------解决方案--------------------
将substr()换成:subCNchar()试试,估计过不了str_shuffle(),建议自己写个重组字符串规则,如随机抽取、加减乘除运算等等;

PHP code

    /** 截取汉字 *
     * $str     要截取的字符串
     * $start   截取的起始位置
     * $length  要截取的长度
     * $charset 字符串编码
     **/
    function subCNchar($str, $start = 0, $length, $charset = "utf-8") {
        if (strlen($str) <font color="#e78608">------解决方案--------------------</font><br>函数前面添加:<br>mb_internal_encoding('GBK');<br>当然不一定是GBK,根据你php文件的字符集修改。<br>再就是生成图片时你加载的字体必须支持中文。
<br><font color="#e78608">------解决方案--------------------</font><br>页面最顶加入header('Content-type: text/html;charset=UTF-8'); <div class="clear"></div>
登录后复制
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号