Php 用他的值替换常量名

Php 用他的值替换常量名,php,constants,Php,Constants,如何将标记的常量名称替换为字符串中的值? 比如说, 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 =

如何将标记的常量名称替换为字符串中的值? 比如说,

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);
函数foo($s){ $m=数组(); preg_match_all('/(\[^\]]+\])/',$s,$m); $m=$m[0]; 印刷费(百万美元); $v=数组(); 对于($i=0;$i
define('name', 'Evgeny');
echo '[verb], dear ', name;
单独使用,不要用引号括起来,那怎么办

echo foo('[verb], dear '.name);
您可以使用:

echo foo( '[verb], dear ' . name );

我不是想把它传给
foo()
,只是告诉他如何使用常量。我知道。我的意思是他想把字符串发送到
foo()
。如果他使用您在上面放置的字符串,逗号concat字符将导致严重问题;)我知道他想做什么,但他的工作仍然是将其更改为他的需要,而不是复制/粘贴。请更新已发布的答案。而不是复制。已经发布的答案无效。我正在评论你的答案,让你知道这个错误。你的名字后面有一个点和一个引号。我不知道这行会是什么:)想让这个函数foo
define('name','Evgeny')$str='[动词],亲爱的[姓名];echo foo($str)