[PHP] 時刻を取得する正規表現

文字列を時刻に分解するとき、やり方は色々ありますし、ライブラリもいっぱい見つかると思いますが、正規表現だけでも基本的なことはできますね。

たとえばこんな書き方は簡単でわかりやすいです。

preg_match('/((\d+)時間)?((\d+)分)?((\d+)秒)?/',
 '2時間53分14秒', $match);
print_r($match);

/*
Array
(
    [0] => 2時間53分14秒
    [1] => 2時間
    [2] => 2
    [3] => 53分
    [4] => 53
    [5] => 14秒
    [6] => 14
)
*/

これだと、53分14秒や2時間14秒のように前/途中が無いときにも、勝手に詰められてしまうことも無くて扱いやすいです。

正規表現さえ使えればライブラリに依存しないので、とっさな時も大丈夫ですね。
同僚がもっとスマートな正規表現を教えてくれましたが、たぶんこちらの方がわかりやすい。

デザインも頼めるシステム開発会社をお探しならBPS株式会社までどうぞ 開発エンジニア積極採用中です! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

baba

ゆとりプログラマー。 高校時代から趣味でプログラミングを初め、そのままコードを書き続けて現在に至る。慶應義塾大学環境情報学部(SFC)卒業。BPS設立初期に在学中から参加している最古参メンバーの一人。Ruby on Rails、PHP、Androidアプリ、Windows/Macアプリ、超縦書の開発などを気まぐれにやる。軽度の資格マニアで、情報処理技術者試験(16区分17回 + 情報処理安全確保支援士試験)、技術士(情報工学部門)、Ruby Programmer Gold、AWSソリューションアーキテクト(アソシエイト)、日商簿記2級、漢検準1級などを保有。

babaの書いた記事

BPSアドベントカレンダー

週刊Railsウォッチ