あまり威張れた話しではないんですけどね。。。
PHPで生年月日の書式を変更するプログラムを組んでいました。
(例:"xxxx年xx月xx日"→"xxxx/xx/xx")
$tanjyoubi = '1983年10月12日';
$tanjyoubi = mb_ereg_replace("年|月|日","/",$tanjyoubi);
↑これで出来なかったんですよ。。。
タブン、ローカルの設定のような気がするのですが本番のサーバも動いていないような気がします。
要調査ですけど。。。
で、どうしたかと言うと日本語を見つけてうまく変換できないようなので
↓正規表現で数字だけを拾って書式を再構成しました。
$tanjyoubi = mb_ereg_replace("([0-9]{2,4}).?([0-9]{1,2}).?([0-9]{1,2}).?","\\1/\\2/\\3",$tanjyoubi);
もっと良いやり方もあるかと思いますが久しぶりに正規表現が綺麗にかけたのでブログに書いておきます。
[今回使用したPHPの関数]
string mb_ereg_replace ( string pattern, string replacement, string string [, array option])
(PHP 4 >= 4.2.0, PHP 5)
マルチバイト文字列に正規表現による置換を行う
pattern : 検索文字(正規表現が利用出来る)
replacement: 置換文字列
patternでマッチングした文字列は\1,\2,\3などとして置換文字列内で使用可能となります。
string : 検索対象文字列(マルチバイト)
option : option パラメータで、マッチングの動作を変更可能です。
i を指定した場合、大文字・小文字が 区別されなくなります。
x を指定した場合、空白が無視されます。
m を指定した場合、マルチラインモードとなり、 改行文字も "." に含まれるようになります。
p を指定した場合、POSIX モードとなり、 改行も通常文字とみなされるようになります。
e を指定した場合、文字列 replacement がPHPの式として評価されます。
コメントする