【PHP】文字列を一文字ずつ分割して配列に格納する方法

更新日:2024/02/27

PHPで文字列を一文字ずつ分割して配列に格納する方法を紹介します。

このページの目次

 

mb_str_split()

PHP7.4以降はmb_str_split()を使用することで、日本語などのマルチバイト文字列を一文字ずつ分解して配列に格納することができます。
使い方は文字列を引数として渡すだけです。

$text = 'Hello!こんにちは';
$array = mb_str_split($text);
var_dump($array);

結果は、次のようになります。

array(11) {
  [0]=>
  string(1) "H"
  [1]=>
  string(1) "e"
  [2]=>
  string(1) "l"
  [3]=>
  string(1) "l"
  [4]=>
  string(1) "o"
  [5]=>
  string(1) "!"
  [6]=>
  string(3) "こ"
  [7]=>
  string(3) "ん"
  [8]=>
  string(3) "に"
  [9]=>
  string(3) "ち"
  [10]=>
  string(3) "は"
}

第二引数に数値を渡すと、分割する文字数を指定できます。

$array = mb_str_split($text,6);
var_dump($array);

結果は、次のようになります。

array(2) {
  [0]=>
  string(6) "Hello!"
  [1]=>
  string(15) "こんにちは"
}

PHP5でマルチバイト文字未対応のstr_split()が導入されましたが、日本語に使用できなくて不便でした。

mb_str_split()はマルチ・非マルチ気にしなくていいので、こちらを使用しておけばよさそうです。

 

以前の方法

PHP7.4より前のバージョンでmb_str_split()のような処理を行うなら、次のように一文字ずつ取り出して配列にセットしていきます。

function my_mb_str_split( $text , $splitLength = 1){
    $splitLength =  $splitLength < 1 ? 1 :  $splitLength;
    $array = array();
    $len = mb_strlen($text);
    for($count = 0;  $count < $len ; $count += $splitLength ){
        array_push( $array , mb_substr( $text , $count , $splitLength ) );
    }
    return $array;
}

$text = 'Hello!こんにちは';
var_dump(my_mb_str_split($text));
var_dump(my_mb_str_split($text,6));

結果は、次のようになります。

array(11) {
  [0]=>
  string(1) "H"
  [1]=>
  string(1) "e"
  [2]=>
  string(1) "l"
  [3]=>
  string(1) "l"
  [4]=>
  string(1) "o"
  [5]=>
  string(1) "!"
  [6]=>
  string(3) "こ"
  [7]=>
  string(3) "ん"
  [8]=>
  string(3) "に"
  [9]=>
  string(3) "ち"
  [10]=>
  string(3) "は"
}

array(2) {
  [0]=>
  string(6) "Hello!"
  [1]=>
  string(15) "こんにちは"
}

更新日:2024/02/27

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。