为糟糕的头衔和解释道歉。
说我有这样的数组:
$myArray = array(
"name" => "Hello",
"description" => "World"
);
和一些这样的HTML:
<h1>{name}</h1>
<p>{description}</p>
使用PHP的preg_replace
函数(或者别的,我不介意),是否可以用数组中的值替换{}
字符串?< / p>
<h1>Hello</h1>
<p>World</p>
答案 0 :(得分:2)
你可以在vanilla PHP中这样做:
$str = '<h1>{name}</h1>
<p>{description}</p>';
$myArray = array(
"name" => "Hello",
"description" => "World"
);
echo preg_replace_callback('/\{(\w+)}/', function($match) use ($myArray){
$matched = $match[0];
$name = $match[1];
return isset($myArray[$name]) ? $myArray[$name] : $matched;
}, $str);
结果如下:
<h1>Hello</h1>
<p>World</p>
或者您可以使用例如实现StrSubstitutor
$str = '<h1>{{name}}</h1>
<p>{{description}}</p>';
$myArray = array(
"name" => "Hello",
"description" => "World"
);
$strSubstitutor = new StrSubstitutor($myArray);
$substituted = $strSubstitutor->replace($str);
答案 1 :(得分:0)
首先,让我们构造正则表达式:
$re = implode('|', array_map(function($el) {
return '{' . $el . '}';
}, array_keys($myArray));
现在我们准备摇滚了:
$result = preg_replace_callback(
"/$re/",
function($match) use($myArray) {
return $myArray[$match[0]];
} , $input
);