PHPのpreg_split関数で文字列を分割して配列にするサンプルです。
preg_splitは正規表現を使用できます。
目次
サンプル | preg_splitとは(文字列を分割して配列にする) |
カンマで区切る / 半角スペースで区切る / タブで区切る | |
スラッシュで区切る / 改行で区切る | |
複数の区切り文字をORで指定 / 複数の区切り文字をANDで指定 | |
取得する要素数を指定 / 末尾が区切り文字の時、最後は要素になる? |
preg_splitとは(文字列を分割して配列にする)
array preg_split ( string $正規表現のパターン , string $入力文字列 [, int $数値 = -1 [, int $flags = 0 ]] ) |
- 正規表現で文字列を分割します。
- 戻り値は配列です。
- 3つ目の引数(数値)は、分割する数を指定します。省略可能です。0と-1は制限が無いことを意味します。
- 以下は、PHPマニュアルのpreg_split関数のリンクです。
http://php.net/manual/ja/function.preg-split.php
カンマで区切る
<?php
$str1 = "赤,黄,青";
$array1 = preg_split("/,/", $str1);
foreach ($array1 as $a) {
echo $a; //赤 黄 青
}
echo $array1[0]; // 赤
3行目は、文字列をカンマで区切って配列にしています。
半角スペースで区切る
<?php
$str1 = "赤 黄 青";
$array1 = preg_split("/\s/", $str1);
foreach ($array1 as $a) {
echo $a; //赤 黄 青
}
echo $array1[0]; // 赤
3行目は、文字列を半角スペースで区切って配列にしています。(バックスラッシュ(円記号)+S)
タブで区切る
<?php
$str1 = "赤 黄 青";
$array1 = preg_split("/\t/", $str1);
foreach ($array1 as $a) {
echo $a; //赤 黄 青
}
echo $array1[0]; // 赤
3行目は、文字列をタブで区切って配列にしています。(バックスラッシュ(円記号)+t)
スラッシュで区切る
<?php
$str1 = "2020/05/21";
$array1 = preg_split("/\//",$str1);
print_r($array1);//Array ( [0] => 2020 [1] => 05 [2] => 21 )
foreach ($array1 as $a){
echo $a; //2020 05 21
}
echo $array1[0]; // 2020
3行目は、スラッシュで分割します。
区切るスラッシュの前にバックスラッシュを入れます。
改行で区切る
<?php
$str1 = "赤と黄\r\n青と緑";
$array1 = preg_split("/\r\n|\n/", $str1);
print_r($array1); //Array ( [0] => 赤と黄 [1] => 青と緑 )
正規表現で改行を指定しています。
\r\nは復帰改行(CRLF)、\nは改行(LF)、パイプ(|)はorを意味します。
複数の区切り文字をORで指定
<?php
$str1 = "あ,い:う,え";
$array1 = preg_split("/[,:]/", $str1);
print_r($array1); //Array ( [0] => あ [1] => い [2] => う [3] => え )
3行目の[,:]は、カンマ(,)またはコロン(:)という正規表現です。
複数の区切り文字をANDで指定
<?php
$str1 = "a:a:;bb:;c;c";
$array1 = preg_split("/:;/", $str1);
print_r($array1); //Array ( [0] => a:a [1] => bb [2] => c;c )
3行目の:;は、コロン(:)とセミコロン(;)という正規表現です。
正規表現のパターンにiオプション(preg_split("/;:/i",$str1))を使用すると大文字と小文字の区別をしなくなります。
取得する要素数を指定
<?php
$str1 = "a,b,c,d,e,f,g";
$array1 = preg_split("/,/", $str1,3);
print_r($array1); //Array ( [0] => a [1] => b [2] => c,d,e,f,g )
3行目は、3つ目の引数が3なので戻りの配列の要素数は3つです。
末尾が区切り文字の時、最後は要素になる?
<?php
$str1 = "a,b,c,,";
$array1 = preg_split("/,/", $str1);
print_r($array1); //Array ( [0] => a [1] => b [2] => c [3] => [4] => )
2行目は、末尾がカンマで終わっています。
結果は、5,7行目のように空文字も要素として取得します。
正規表現のパターン
関連の記事