*

php:文字列を特定文字で分割する方法

公開日: : 最終更新日:2014/08/01 php


プログラムを書いていると結構頻繁に遭遇する文字列分割。phpでの書き方を掲載します。

 

文字列分解関数の種類

phpには幾つか関数が用意されています。

  • split(“区切り文字(正規表現可)”, “入力文字列”) ・・・php5.3で非推奨
  • explode(“区切り文字(正規表現不可)”, “入力文字列”)
  • preg_split(“区切り文字(正規表現可)”, “入力文字列”)

 

非推奨になっている関数は今後使えなくなる可能性があるので使わないように気をつけましょう。

 

explodeの使用方法

explodeは入力文字列を区切り文字で分割する関数です。ただし区切り文字に正規表現は使えません。その代わり実行速度がとても高速となっているそうです。

書式:

explode(“区切り文字”, “入力文字列”[, limit])

limit:

指定がない場合:入力文字列を全て分割して取得します
正数の場合:limit数分、入力文字列を分割して取得します
負数の場合:最後からlimit数分を除いて入力文字列を分割して取得します
0の場合:1を指定した場合と同じです

 

使用例1:

$result = explode(",", "aaa,bbb,ccc");
print_r($result);

//実行結果
Array (
 [0] => aaa
 [1] => bbb
 [2] => ccc
)

 

使用例2:

$result = explode(",", "aaa,bbb,ccc", 2);
print_r($result);

//実行結果
Array (
 [0] => aaa
 [1] => bbb
)

 

使用例3:

$result = explode(",", "aaa,bbb,ccc", -2);
print_r($result);

//実行結果
Array (
 [0] => aaa
)

 

preg_splitの使用方法

preg_splitは入力文字列を正規表現で分割する関数です。正規表現が使えるので柔軟な文字列分割が可能です。

書式:

preg_split(“区切り文字”,”入力文字列” [, limit, flags])

limit:
正数の場合:limit数分、入力文字列を分割して取得します
-1,0,nullの場合:入力文字列を全て分割して取得します

flags:

PREG_SPLIT_NO_EMPTY

空文字列でないものだけが preg_split() により返されます。

PREG_SPLIT_DELIM_CAPTURE

文字列分割用のパターン中の カッコによるサブパターンでキャプチャされた値も同時に返されます。

PREG_SPLIT_OFFSET_CAPTURE

各マッチに対応する文字列のオフセットも返されます。 これにより、返り値は配列となり、配列の要素 0 はマッチした文字列、 要素 1subject におけるマッチした文字列のオフセット値となります。

 

使用例1:

カンマまたは ” “, \r, \t, \n , \f などの空白文字で文字列を分割します

$result = preg_split("/[\s,]+/", "hypertext markup, language");
print_r($result);

//実行結果
Array (
 [0] => hypertext
 [1] => markup
 [2] => language
)

 

使用例2:

カンマで文字列を分割します。ただし、空文字は除いて取得します。

$result = preg_split("/,/", "hypertext,,markup,language", -1, PREG_SPLIT_NO_EMPTY);
print_r($result);

//実行結果
Array (
 [0] => hypertext
 [1] => markup
 [2] => language
)

 

使用例3:

半角スペースで文字列を分割し、分割した文字列とそのオフセットを取得します

$result = preg_split("/ /", "hypertext markup language");
print_r($result);

//実行結果
Array (
 [0] => Array
   (
    [0] => hypertext
    [1] => 0
   )
 [1] => Array
   (
    [0] => markup
    [1] => 10
   )
 [2] => Array
   (
    [0] => language
    [1] => 17
   )
)

 

非推奨となったsplitは文字列、正規表現のどちらも利用できたのですが、

5.3.0以降はexplode,preg_splitの2つへ用途別に分割されたので目的に応じて使うように気をつけましょう。

 

次回以降にexplodeとpreg_splitの速度差異について確認してみたいと思います。

ad_right_top

関連記事

blog_logo_small

Laravel:artisanを利用したコマンドライン実行

定期的にデータの更新が必要な場合などにphpで記述した処理を実行したい時もあるかと思います。メンテナ

記事を読む

blog_logo_small

php:配列でキーの存在確認をする方法

ソースを書いていて何度が調べることがあったので備忘の為に残しておきます。   配列

記事を読む

blog_logo_small

phpフレームワーク — Laravelのご紹介

webサービスの構築をおこなうにあたり、どのような言語/ミドルウェアを利用するかは作成するサービスの

記事を読む

blog_logo_small

phpでRSSを取得して読み込む方法

ブログなどで新着記事の配信に利用されているRSSをphpで読み込んで表示する方法について掲載します。

記事を読む

blog_logo_small

php:GD画像ライブラリのインストール

MediaWikiを利用する上で、画像のサムネイル表示を使う場合はインストールが必要となります。

記事を読む

blog_logo_small

php:文字列分割関数explodeとpreg_splitの速度について

以前の記事で文字列分割を行うexplodeとpreg_splitを紹介した際に、explodeの方が

記事を読む

blog_logo_small

php:バージョンの確認方法

インストールされているphpのバージョンを確認する方法です。   コマンドで確認す

記事を読む

blog_logo_small

intl PEC のインストール

MediaWikiの利用において「intl pecl 拡張機能」を使用する場合はインストールが必要で

記事を読む

blog_logo_small

php:配列の要素を連結して文字列出力[implode]

ログ出力などで配列の中身を出力したい場合に、簡単に配列を連結して文字列化する方法です。 &nb

記事を読む

blog_logo_small

php:ファイルの更新日時を取得し、クエリとして付与する

cssやjsを更新した際に、キャッシュされてしまい表示が更新されないという事が良くあると思います。更

記事を読む

google以外広告

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

ad_right_top

linux-pen
【cron】秒間隔で定期実行する為の設定方法

コマンドを定期実行させたい場合に利用するcronですが、普通に利用する

blog_logo_small
【Apache】 ReverseProxy(リバースプロキシ)を設定してサブディレクトで別サーバーの内容を表示

今回はApacheのリバースプロキシ設定について紹介したいと思います。

blog_logo_small
【Apache】 Aliasを設定してサブディレクトでDocumentRoot以外を参照する

今回はApacheのAlias設定について紹介したいと思います。この方

no image
2015:新年のご挨拶

明けましておめでとうございます。 昨年はたくさんの方々に当ブログ

blog_logo_small
MySQL:外部ホストからのDBアクセス方法

MySQLではデフォルトで外部ホストからのアクセスを許可していないので

→もっと見る

  • アクセスカウンター
PAGE TOP ↑