我正在尝试做一些事情,我从数据库中获取一个长字符串,并替换可能的标签,如 [timeYEAR] [timeMONTH] [timeDAY] - 基本上是 [] 中的任何内容,然后根据案例或开关用某些东西替换该项目别的。
就像用 2013 替换 [timeYEAR]。
但我不想为每种可能的情况创建一个函数。
有任何想法吗?
提前致谢!
我正在尝试做一些事情,我从数据库中获取一个长字符串,并替换可能的标签,如 [timeYEAR] [timeMONTH] [timeDAY] - 基本上是 [] 中的任何内容,然后根据案例或开关用某些东西替换该项目别的。
就像用 2013 替换 [timeYEAR]。
但我不想为每种可能的情况创建一个函数。
有任何想法吗?
提前致谢!
preg_replace_callback
如果您想做一些更动态的事情(不区分大小写的匹配,允许 and 之间有多个空格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
调用。