在PHP中我們可以通過str_split 將字符串轉換為數組,但是卻對中文無效,下面記錄一下個人將中文字符串轉換為數組的方法。
用到的PHP函數
mb_strlen — 獲取字符串的長度
mb_substr — 獲取字符串的部分。
string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding()]] )
根據字符數執行一個多字節安全的 substr() 操作。 位置是從 str 的開始位置進行計數。 第一個字符的位置是 0。第二個字符的位置是 1,以此類推。
參數
str
從該 string 中提取子字符串。
start
str 中要使用的第一個字符的位置。
length
str 中要使用的最大字符數。 If omitted or NULL is passed, extract all characters to the end of the string.
encoding
encoding 參數為字符編碼。如果省略,則使用內部字符編碼。
代碼:
function ch2arr($str) { $length = mb_strlen($str, 'utf-8'); $array = []; for ($i=0; $i<$length; $i++) $array[] = mb_substr($str, $i, 1, 'utf-8'); return $array; }
測試:
$ch = '田邊的稀泥里到處是泥鰍!'; $arr = ch2arr($ch); var_dump($arr);
測試結果:
array (size=12)
0 => string '田' (length=3)
1 => string '邊' (length=3)
2 => string '的' (length=3)
3 => string '稀' (length=3)
4 => string '泥' (length=3)
5 => string '里' (length=3)
6 => string '到' (length=3)
7 => string '處' (length=3)
8 => string '是' (length=3)
9 => string '泥' (length=3)
10 => string '鰍' (length=3)
11 => string '!' (length=1)
