首页 > Web开发 > 详细

PHP 字符串索引问题

时间:2019-12-23 19:54:26      阅读:117      评论:0      收藏:0      [点我收藏+]
  • php 通过下标获取的是字节,而不是字符!!!!$str{$i} 获取的是第$i个字节, 而不是第$i 个字符!!!哦 No,准确说是第$i+1个字节,因为下标是从0开始的,并且应该使用 []代替{},这样在以后的PHP版本更安全。
  • 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+1个字节,下标是从0 开始的
                $content .= mb_substr($assessment[‘content‘], $i, 1);  //通过这种方式获取第$i+1个字符
                if($i % 15 == 0) {
                    $content .= "\n\r";  //每15个字换行
                    $content .= mb_substr($assessment[‘content‘], $i, 1);  //str_split
                }
            }
            echo ‘content:‘,$content;

     

PHP 字符串索引问题

原文:https://www.cnblogs.com/bneglect/p/12085324.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!