文字列

文字列

特定の文字で文字列を分割する

  • このエントリーをはてなブックマークに追加

データベースやCSVファイルなどから読み込んだデータを、「,(コンマ)」など特定の文字で分割して処理を行いたい場合があると思います。そんなときに便利なpreg_split関数の使い方を解説します。

この記事のポイント

  • 任意の文字で文字列を分割できる
  • 文字列分割した場所を取得する
  • 文字列分割に便利なpreg_split関数の使い方が分かる

目次

基本編

文字列の分割に使うpreg_split関数は、正規表現を使って文字列の検索を行い、ヒットした部分で文字列を分割します。
返り値として、分割した文字列を配列で返します。

基本編では、文字列の中に「,(半角コンマ)」で文字列を区切っていきます。

正規表現の基本的な使い方については「文字列に特定の文字(単語)が含まれるか検索」をご覧ください。

コード例

$res = null;
$str = 'dog,cat,fox,mouse,';

$res = preg_split( '/,/', $str);

// 置換後の文字列
var_dump($res);

実行結果

実行結果

解説

$strに入っている文字列を「,」で区切り、返り値である文字列の配列を$resに格納しています。

分割する回数を指定

preg_split関数に3つ目のパラメータとして数値を渡すことで、「分割後の文字列の最大数」を指定することができます。
言い換えれば、返り値となる配列の最大の長さとなり、分割する回数を指定することにもなります。

コード例

$res = null;
$str = 'dog,cat,fox,mouse,';

$res = preg_split( '/,/', $str, 2);

// 置換後の文字列
var_dump($res);

実行結果

実行結果

解説

今回のように「2」を指定した場合は分割回数を1回、「5」を指定すると分割回数を4回までと指定していることになります。

初期値は無制限の「-1」で、指定する場合は「-1」、または「1」以上の値を指定する必要があります。

分割後の文字が空だった場合はスキップ

分割した結果の配列には、分割後の文字列が空であっても返り値に含まれます。
もし不要の場合は、preg_split関数の4つ目のパラメータを指定することでスキップすることができます。

コード例

$res = null;
$str = 'dog,cat,fox,mouse,';

$res = preg_split( '/,/', $str, -1, PREG_SPLIT_NO_EMPTY);

// 置換後の文字列
var_dump($res);

実行結果

今回の実行結果は「指定あり」、「指定なし」は基本編の実行結果となります。

実行結果

解説

4つ目のパラメータに「PREG_SPLIT_NO_EMPTY」を指定しています。
この定数を指定すると、もし分割後の文字が空だった場合は返り値に含まないようになります。

実行結果を見ると、今回の分割では文字列の末尾にある「,」以降にはテキストが空のためにスキップされています。

分割された場所を取得

実際に文字列の何文字目で分割が行われたのかを知りたい場合は、4つ目のパラメータに「PREG_SPLIT_OFFSET_CAPTURE」を指定します。

コード例

$res = null;
$str = 'dog,cat,fox,mouse,';

$res = preg_split( '/,/', $str, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);

// 置換後の文字列
var_dump($res);

実行結果

実行結果

解説

4つ目のパラメータに「PREG_SPLIT_OFFSET_CAPTURE」を指定しています。
この定数を指定すると、分割された文字と一緒に、その分割がどこで行われたかを返り値に含めます。

上記の結果では、「dog」はその前に分割が起きていないので0ですが、「cat」は4文字目で分割、「fox」は8文字目で分割、「mouse」は12文字目で分割されたということが分かります。

また、今回のコードのように4つ目のパラメータは「|(パイプライン)」で区切ることで複数指定することが可能です。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

ありがとうございます。
コメントを送信しました。

  • このエントリーをはてなブックマークに追加
前のページへ 一覧ページへ一覧 次のページへ