在PHP中,有時候我們需要將一個字串轉換成陣列。當字串中含有英文單字或中文漢字時,我們可能需要將其拆分成陣列元素。在此,本文將詳細介紹如何將中英文字串轉換成陣列。
首先,我們來看看PHP中如何將一個字串打散成陣列元素。使用PHP中的explode()函數可以實現:
$str = "Hello World"; $arr = explode(" ", $str); print_r($arr);
該程式輸出的結果是:
Array ( [0] => Hello [1] => World )
在上述程式中,使用空格作為分隔符號將字串打散成為數組元素。其中,explode()函數的第一個參數指定了分隔符,第二個參數則是要打散的字串變數。
接下來,我們考慮如何將中英混合的字串轉換成陣列。這裡我們需要使用PHP的正規表示式來進行字串的分割。以中文和英文混合的句子為例,我們可以使用以下程式實作字串到陣列的轉換:
$str = "Hello,世界"; preg_match_all("/./u", $str, $matches); print_r($matches[0]);
上述程式的輸出結果如下:
Array ( [0] => H [1] => e [2] => l [3] => l [4] => o [5] => , [6] => 世 [7] => 界 )
此處,我們使用了preg_match_all()函數,該函數將一個字串根據正規表示式分割成陣列。其中,正規表示式 "/./u" 則表示符合所有字元(包含中文),u 表示以 UTF-8 編碼解析,保證可以正確處理中文字元。
以上程式透過 preg_match_all() 函數將字串打散成陣列元素,如果字串中有中文則會正常分割成一個個字。透過輸出結果我們可以看到,程式將打散後的所有字元都儲存到了數組變數 $matches[0] 中。
如果我們想將字串中的英文和中文分開儲存到不同的陣列元素中,可以使用下面的程式:
$str = "Hello,世界"; preg_match_all("/[x{4e00}-x{9fa5}]+|[A-Za-z]+/u", $str, $matches); print_r($matches[0]);
該程式的輸出結果如下:
Array ( [0] => Hello [1] => 世界 )
在上述程式中,使用了正規表示式"/[x{4e00}-x{9fa5}] |[A-Za-z] /u"
,其中[x{4e00} -x{9fa5}] 表示匹配中文字符,[A-Za-z] 表示匹配英文字符。
如果我們需要將中文字元轉換成拼音,並且拼音也作為數組元素存儲,我們可以使用以下程式:
$str = "你好,世界"; preg_match_all("/[x{4e00}-x{9fa5}]+|[A-Za-z]+/u", $str, $matches); for($i=0; $i<count($matches[0]); $i++){ $str = $matches[0][$i]; if (preg_match("/[x{4e00}-x{9fa5}]/u", $str)) { $pinyin = PinYin($str); $arr[] = $pinyin[0]; } else { $arr[] = $str; } } print_r($arr);
該程式運行結果如下:
Array ( [0] => ni [1] => hao [2] => shi [3] => jie )
在上述程式中,我們封裝了一個函數PinYin(),該函數用於將中文字元轉換成拼音。在程式中,只要字串中包含中文字符,就會呼叫該函數將中文字符轉換成拼音並儲存到數組變數 $arr 中。
到此,我們就成功地將中英文字串轉換成陣列了。如果你需要進行字元處理和文字分析,那麼字串轉換成陣列將成為你常用的PHP函數之一。
以上是php中英文字串轉數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!