用数组值替换字符串中的模板

时间:2012-03-20 09:22:47

标签: php regex

我有一个字符串,可以有简单的模板。我有一个数组,其中包含replacemenet的值。目前我正在使用循环。但我想将其更改为preg_replace。你能救我吗?

示例:

$values = array(
    'id'   => 120,
    'name' => 'Jim'
);
$string = 'Hello <!name!>. Your ID is <!id!>';
$output = preg_replace(...); // Hello Jim. Your ID is 120

preg_replace不仅应该使用id和name,还可以使用任何其他键。感谢。

1 个答案:

答案 0 :(得分:2)

如下所示?

<?php
$values = array(
    'id'   => 120,
    'name' => 'Jim'
);
$string = 'Hello <!name!>. Your ID is <!id!>';

function foo($val) {
        return '/<!' . $val . '!>/';
}

echo preg_replace(array_map('foo', array_keys($values)), array_values($values), $string);

如果整个事情都在课堂上:

class Template {
        static function bar($val) {
                return '/<!' . $val . '!>/';
        }

        function render($values, $string) {
                echo preg_replace(array_map(array('Template', 'bar'), array_keys($values)), array_values($values), $string);
        }
}

$values = array(
    'id'   => 120,
    'name' => 'Jim'
);
$string = 'Hello <!name!>. Your ID is <!id!>';
$T = new Template();
$T->render($values, $string);