uiuifree.com

- サイト制作のノウハウと最適化を目指して-

2020.11.14【PHP】文字列を1文字ずつ区切って配列にいれる方法(マルチバイトの日本語対応)

【PHP】文字列を1文字ずつ区切って配列にいれる方法(マルチバイトの日本語対応)

    PHPではpreg_splitmb_str_splitを使うことで文字列を一定の長さごとに配列に設定することができます。

    mb_str_splitで文字列を一定の長さで配列に格納する

    PHP7.4からは一定の長さで文字列を区切る関数であるstr_splitのマルチバイト対応であるmb_str_splitが使えるようになりました。 日本語などのマルチバイト文字列を扱う際はmb_str_splitを使ってください。 リファレンス: mb_str_split

    mb_str_splitを使って3文字ずつで分割

    実際にmb_str_splitを使って文字列を分割する例がこちらです。

    mb_str_split
    <?php
    $text = "PHPの文字列分割";
    $output = mb_str_split($text, 3);
    var_dump($output);
    
    output
    array(3) {
      [0]=>
      string(3) "PHP"
      [1]=>
      string(9) "の文字"
      [2]=>
      string(9) "列分割"
    }
    

    mb_str_splitの第二引数で値を指定することで、文字列を3文字ずつ分割し配列に格納することができました。

    preg_splitを使って文字列を1文字ずつ分割する。

    PHP7.4より前のバージョンではpreg_splitを使うことでマルチバイトの文字列分割を実装することができます。

    preg_splitを使った例

    preg_split
    $text = "PHPの文字列分割";
    $output = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
    var_dump($output);
    アウトプット
    array(9) {
      [0]=>
      string(1) "P"
      [1]=>
      string(1) "H"
      [2]=>
      string(1) "P"
      [3]=>
      string(3) "の"
      [4]=>
      string(3) "文"
      [5]=>
      string(3) "字"
      [6]=>
      string(3) "列"
      [7]=>
      string(3) "分"
      [8]=>
      string(3) "割"
    }

    まとめ

    PHP7.4から文字列分割するのに便利なmb_str_splitが使えるようになり非常に便利になりました。
    過去のバージョンでもpreg_splitで正規表現することで文字列を分割することができますね。

    目次
    PROFILE

    このサイトを運営してるuiuifreeです。
    渋谷のベンチャー企業で2年ほど新規事業を担当した後にフリーランスエンジニアにキャリア転換。
    求人サイトの開発が多くエンジニア/看護師/保育士などの分野でサイトを運営しています。

    アウトプット中の技術

    リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)