我有一个像这样的模板字符串
$myStr ="<font face=\"#3#\" size=\"6\">TEST STRING</font>";
这样的字体数组
$fontList = array(
0 => "ubuntumono",
1 => "opensans",
2 => "opensanscondensed",
3 => 'opensanslight',
4 => 'exo2',
5 => 'exo2light'
);
现在我想检查我的字符串face=\"#3#\"
(3是$ fontList中的字体索引)
并将其替换为face=\"opensanslight\"
我怎样才能使用Regex&amp; PHP?谢谢。
答案 0 :(得分:3)
假设PHP 5.3.0或更高版本:
$myStr = preg_replace_callback('/#(\d+)#/', function ($matches) use ($fontList) {
return $fontList[$matches[1]];
}, $myStr);
如果您只想在引号括起来时更改#number#
:
$myStr = preg_replace_callback('/"#(\d+)#"/', function ($matches) use ($fontList) {
return '"' . $fontList[$matches[1]] . '"';
}, $myStr);