PHP 字符串索引問題


  • 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;

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM