<ruby id="ldvnh"><ins id="ldvnh"><menuitem id="ldvnh"></menuitem></ins></ruby>

<address id="ldvnh"></address>

    <form id="ldvnh"></form>

      <em id="ldvnh"></em>

        <noframes id="ldvnh">
          <address id="ldvnh"></address>

          UTF-8 Chinese interception function

          In PHP, use the substr () function is the interception with a Chinese string, it may be garbled, because Western culture the number of bytes occupied by a single word is not the same, substr length parameter is counted according to the byte . In GB2312 encoding, a Chinese account for 2 bytes, English as a byte, and in the UTF-8 encoding of them, a Chinese may occupy two or three bytes, or half-width punctuation in English, 1 byte.

          To address this problem, I found a lot of information, ultimately to find such a passage:

          UTF-8 encoded characters may be from 1 to 3 bytes, the specific number can be judged by the first byte. (Theoretically may take longer, but this assumes no more than 3 bytes)
          The first byte greater than 224, it and its after along with the formation of a 2-byte UTF-8 characters
          The first byte greater than 192 less than 224, it and it's one byte after the formation of a UTF-8 characters
          Otherwise, the first byte is itself a Chinese character (including numbers, and a small part of the punctuation marks).

          OK, know about the principle, to solve the more relaxed, and then wrote the following function is used to UTF-8 characters in interception:

           
          PHP Code

             1. / / String intercept, only UTF-8
             2. Function cut_str ($ str, $ len) (
             3. If (strlen ($ str) <= $ len) return $ str;
             4. $ N = 0;
             5. $ Tempstr ='';
             6. For ($ i = 0; $ i <$ len; $ i + +) (
             7. If (ord (substr ($ str, $ n, 1))> 224) (
             8. $ Tempstr .= substr ($ str, $ n, 3);
             9. $ N + = 3;
            10. $ I + +; / / to a Chinese calculated according to the length of the two English
            11.) Elseif (ord (substr ($ str, $ n, 1))> 192) (
            12. $ Tempstr .= substr ($ str, $ n, 2);
            13. $ N + = 2;
            14. $ I + +; / / to a Chinese calculated according to the length of the two English
            15.) Else (
            16. $ Tempstr .= substr ($ str, $ n, 1);
            17. $ N + +;
            18.)
            19.)
            20. Return $ tempstr .'...';
            21.)


          PHP also has built-in function can be used for different encoded string interception, such as mb_substr (), but to open the corresponding php.ini extension.

          Declined comment

          亚洲一区爱区精品无码