PHP 字符串索引问题

心已入冬 提交于 2019-12-23 18:50:49
  • php 通过下标获取的是字节,而不是字符!!!!$str{$i} 获取的是第$i个字节, 而不是第$i 个字符!!!
  • PHP可以通过
    $str{0} 或者 $str[0]  的形式获取字符串的第一个字节的内容。

    今天写了一段程序,出现了问题

    $contentLength = mb_strlen($assessment['content']);  //计算字符串的长度,以‘字符’计算
            $content = '';
            for($i = 0; $i <= $contentLength; $i++){
                $content .= $assessment['content']{$i};  //开始我本以为通过字符串下标获取的是指定字符,结果出现了乱码,经查阅发现,字符串下标获取的是指定的字节,而不是字符。所以出现了乱码。
                if($i % 10 == 0) {
                    $content .= "\n\r";  //每10个字换行
                    $content .= $assessment['content']{$i};  //str_split
                }
            }
            echo 'content:',$content;

    所以以后要特别注意了,之前还真没注意过这个问题,靠 >^_^<

  • 那么如果我想获取第$i个字符怎么实现呢。可以这样
    $contentLength = mb_strlen($assessment['content']);
            $content = '';
            for($i = 0; $i <= $contentLength; $i++){
                //$content .= $assessment['content']{$i};  //这种形式获取的是第$i个字节
                $content .= mb_substr($assessment['content'], $i, 1);  //通过这种方式获取第$i个字符
                if($i % 15 == 0) {
                    $content .= "\n\r";  //每15个字换行
                    $content .= mb_substr($assessment['content'], $i, 1);  //str_split
                }
            }
            echo 'content:',$content;

     

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!