Entries

PHP 時間の計算

久しぶりにPHPでごく簡単なプログラムを組んでみた。

音声ファイルの長さが「○○:○○」(○○分○○秒の意)と表記してあるページが複数(600!)あり、そのページごとのファイル合計の長さを求め、30分以上あるかどうかを測定するというもの。
久しぶりだと以前多少は憶えていたものも、すっかり忘れてしまっていてググりながらの作業になった。

何となく該当ページのテキストをフォームのテキストエリアにペーストし、該当のテキスト「○○:○○」を抽出して、和算、その値が30分かどうかを判定し条件分岐で結果を出力…って感じかなとは思ったが結構手こずった。

使用した関数は以下。

str_replace …取得したテキストから特定の文字列を削除(置換)する。
preg_match_all …テキストから特定の文字列「○○:○○」(正規表現可)を抽出し、個別に配列に格納。

でここまでやってちょっと問題が。ググってみると「時刻の計算」「日付の計算」等はいっぱい出てくるのだがこういう単純な特定の長さの時間の計算法が出てこない…もしかすると独特な言い回しや専門用語があるのかもしれないが、「PHP 時間 演算」と検索しても出てくるのは目的のものではない。
うーん、参った。

それでもしつこく調べていたらやっと見つかった。
要は時間を秒に換算し、その上で数値として演算した後再び時刻表記に戻すということ。言われてみればそうか。

list($m,$s)=explode(":",$text); …抽出した$textを文字:で分割して$m,$sという変数に格納。
$ma=$m*60+$s; …秒に換算
$m=floor($ma/60); …60で割って小数点以下を切り捨て、分数に換算。
$s=fmod($ma,60); …60で割った余りを求めて秒数を取得。
sprintf('%d:%02d',$m,$s); …指定の書式で$m,$sを出力。

これでぐっと作業の時間圧縮ができた…つーかplaggerと組みあわせて作業したらもう終わってもうた。
この記事に対してトラックバックを送信する(FC2ブログユーザー)
http://linuxpro.blog23.fc2.com/tb.php/106-aac142fd

0件のトラックバック

0件のコメント

コメントの投稿

投稿フォーム
投稿した内容は管理者にだけ閲覧出来ます

Appendix

プロフィール

Author:ダースプレイガス
はまってばっかの輩

アクセスカウンター

技術系スポンサー

ありがとうございます

ブロとも申請フォーム

この人とブロともになる

検索ワードメモ

vi viというテキストエディタ使い方 Solaris UNIX LinuxディストリビューションviクローンOS ASCIIコード日本語文字コードEUC, JIS, SJISテキスト入力と置換カーソル移動.exrcファイルワイルドカード('*', '?'などコマンドモードインサートモードホームポディションラインエディタハッカーズライフEmacs対viハッカー「Emacsかviか」スクリーンエディタ文字の訂正カーソルの移動 行の移動とコピー もっと速く移動するには 文字列単語のコピーと移動DNS エラーダイナミックDNS DNSサーバDNS 設定DNSサフィックス Domain Name System ホスト名IP アドレスサーバソフトウェアネームサーバ名前解決DNSZONE DNSサーバの構築ENUM分散型データベース自宅でインターネットサーバーダイナミックDNS(DDNS)固定IPアドレスJPRS 再帰的な問合せDDoS 攻撃の対策アクセス制限グローバルIP NATやIPMasquerade DNS & BIND クックブックネームサーバ管理者レシピ集BINDドメインの登録サブドメイン DNSレコードレジストリレジストラお名前.comインターネットレンタルサーバー専用サーバーダイナミック サービスネームサーバアドレス再帰的な問い合わせサブドメインブロードバンド回線TCP/IP nslookup(dig)テストdig日本レジストリサービス(JPRS) JPドメイン名セカンダリネームサーバエラーダイナミック 逆引きラウンドロビンキャッシュDynamic The FreeBSD FreeBSD友の会 セキュリティ メーリングリスト 日本語マニュアル コマンド インストール方法 カリフォルニア大学バークレー校 プラットフォーム パッチキット jail PC/AT互換機用のUNIX互換OS ソースコード 技術評論社FreeBSD FreeBSD 7.0 7.0-RELEASE 備忘録 cpan CPANモジュール BSDカーネル FreeBSD-5系. SunOS スワップ Debian GNU/kFreeBSD- サーバ セキュリティ Linux DB Web CGI Perl Java XML プログラムLDAP 迷惑メール(スパム) ウイルス スパイウェア トロイの木馬 Linux raid 復旧可能 エンジニア タワー RAID 最新CPU Redhat Turbo SuSE Miracle Unix系オペレーティングシステム(OS) x86 Linuxカーネル Linuxディストリビューション - フィンランドのヘルシンキ大学 Linus Torvalds フリーソフトウェア Apache MySQL Xen Linuxコマンド集 Vine Linux Red Hat Enterprise Linux レッドハット オープンソース・カンパニーRed Hat Linuxの開発・供給元。 Turbolinux ターボリナックスデスクトップ Ubuntu Japanese UNIX/Linuxコマンド

技術系スポンサー

  • seo
あわせて読みたいブログパーツ
  1. 無料アクセス解析