データベースから長い文字列を取得し、[timeYEAR] [timeMONTH] [timeDAY] などの可能なタグを置き換える何かをしようとしています - 基本的に [] 内のすべてのもので、ケースまたはスイッチに基づいてその項目を何かに置き換えますそうしないと。
[timeYEAR] を 2013 に置き換えます。
しかし、考えられるケースごとに関数を作成したくありません。
何か案は?
前もって感謝します!
データベースから長い文字列を取得し、[timeYEAR] [timeMONTH] [timeDAY] などの可能なタグを置き換える何かをしようとしています - 基本的に [] 内のすべてのもので、ケースまたはスイッチに基づいてその項目を何かに置き換えますそうしないと。
[timeYEAR] を 2013 に置き換えます。
しかし、考えられるケースごとに関数を作成したくありません。
何か案は?
前もって感謝します!
preg_replace_callback
より動的なことをしたい場合は、このようなことを達成できます (大文字と小文字を区別しない一致、time
と の間に複数のスペースを許可する{time_unit}
など)。
<?php
$res = preg_replace_callback('/\[time(?P<type>[^\]]+)\]/ui', function ($matches) {
switch (trim(strtolower($matches['type']))) {
case 'year':
return date('Y');
break;
case 'month':
return date('F');
break;
case 'day':
return date('j');
break;
default:
return $matches[0];
break;
}
}, '[timemonth] [timeday], [timeyear] [timenope]');
よりダイナミックにする必要がない場合strtr
は、おそらく少し速いでしょう。
<?php
$res = strtr('[timeMONTH] [timeDAY], [timeYEAR]', array(
'[timeMONTH]' => date('F'),
'[timeDAY]' => date('j'),
'[timeYEAR]' => date('Y'),
));
date
値のソースがたまたま何であれ、呼び出しを置き換えます。