歡迎來到小豬圈!

2009-04-22

將字串分割為字元陣列

  • PHP 支援用陣列的方式存取字串的字元 $string[1] ,但不能直接將字串用在迴圈上。
  • 上述方式與 str_split() 會有中文斷字的問題,preg_split() 沒有加 u (utf-8 mode)修飾字符也會有一樣問題。
  • 這種情況下 mb_split 派不上用場,雖然支援 regular expression 但不能用空的 pattern (不用 start/end delimiter)。
  • 兩個解決方案之一是用 mb_* 自已寫函式處理,另一個就是用 preg_split() 加上 u 修飾字符,見範例:
    
    <?php
    function string_to_array ($string) {
      $array = array();
      $strlen mb_strlen($string);
      for ($i=0$i<$strlen$i++) {
        $array[] = mb_substr($string$i1'UTF-8');
      }
      return $array;
    }
    
    $string '中文字測試';
    
    str_split($string);
    
    preg_split("//"$string);
    
    mb_split(""$string); // Warning: mb_split(): Empty regular expression
    
    preg_split("//u"$string); //This modifier is available from PHP 4.1.0/Unix and from PHP 4.2.3/win32
    
    var_dump(string_to_array($string));
    ?>
    
    

1 comment:

  1. worked for me after this: $strlen = mb_strlen($string, 'utf-8');

    ReplyDelete

Comment Form Message

標籤分類

Blog Archive

Labels

Google Analytics Tracking Code

About Me

My photo
Keelung, R.O.C, Taiwan
一個不學無術、混吃等死的傢伙…