weixin_42384119 2018-12-06 05:25 采纳率: 33.3%
浏览 999
已采纳

php 怎么达到js里的charCodeAt效果

str = $('#txt_ssid7').val();
        var byteSize = 0;
        for (var i = 0; i < str.length; i++) {
            var charCode = str.charCodeAt(i);
            if (0 <= charCode && charCode <= 0x7f) {
                byteSize += 1;
            } else if (128 <= charCode && charCode <= 0x7ff) {
                byteSize += 2;
            } else if (2048 <= charCode && charCode <= 0xffff) {
                byteSize += 3;
            } else if (65536 < charCode && charCode <= 0x1FFFFF) {
                byteSize += 4;
            } else if (0x200000 < charCode && charCode <= 0x3FFFFFF) {
                byteSize += 5;
            } else if (0x4000000 < charCode && charCode <= 0x7FFFFFFF) {
                byteSize += 6;
            }
        }
                if (byteSize > 31) {

        }else {

        }

在tp5中要做一个后台验证,输入的字符不能大于31,老大说汉字三个字符,编码这块搞不懂,就网上找了个js写在前面,后台的找不到,php方法怎么写啊,研究好久研究不出来,帮帮我嘛。

  • 写回答

1条回答

  • 锅巴胸 2018-12-06 06:39
    关注

    下面是判断输入字符串的Unicode值

    <?php
    function uniord($str,$from_encoding=false){
            $from_encoding=$from_encoding ? $from_encoding : 'UTF-8';
    
            if(strlen($str)==1){ return ord($str);} 
    
    
            $str=mb_convert_encoding($str, 'UCS-4BE', $from_encoding);
            $tmp=unpack('N',$str);
            return $tmp[1];
    }
    
    $str="12345,上山打老虎";
    
    $result=array();
    for($i=0,$l=mb_strlen($str,'utf-8');$i<$l;++$i){
            $result[]=uniord(mb_substr($str,$i,1,'utf-8'));
    }
    echo join(",",$result);
    ?>
    

    运行结果:49,50,51,52,53,44,19978,23665,25171,32769,34382

    另外如果仅仅是判断字符串长度:
    字符串不能大于31可以if(strlen($str) <= 31){}
    汉字不超过三个字可以if(mb_strlen($str,'utf-8')<=3){}

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体