首頁 > 後端開發 > PHP問題 > php中英文字串轉數組

php中英文字串轉數組

王林
發布: 2023-05-19 19:13:05
原創
605 人瀏覽過

在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板