如何将标记的常量名称替换为字符串中的值? 例如,
define('name', 'Evgeny');
echo foo('[verb], dear [name]');
# Must be '[verb], dear Evgeny' or '[something], dear Evgeny'
解决。接下来效果非常好:
function foo($s) {
$m = array();
preg_match_all('/(\[[^\]]+\])/', $s, $m);
$m = $m[0];
print_r($m);
$v = array();
for ($i = 0; $i < count($m); $i++) {
$name = substr($m[$i], 1, -1);
$v[$i] = defined($name) ? constant($name) : '!' . $name . '!';
}
return str_replace($m, $v, $s);
}
define('name', 'Evgeny');
$str = '[verb], dear [name]';
echo foo($str);
返回'!verb !,亲爱的Evgeny'
答案 0 :(得分:0)
define('name', 'Evgeny');
echo '[verb], dear ', name;
单独使用它,不要用引号将其包装
答案 1 :(得分:0)
怎么样:
echo foo('[verb], dear '.name);
答案 2 :(得分:0)
你会使用:
echo foo( '[verb], dear ' . name );