PHP正则表达式替换数据数组

时间:2014-02-10 12:41:29

标签: php regex

我有一个像这样的模板字符串

$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?谢谢。

1 个答案:

答案 0 :(得分:3)

假设PHP 5.3.0或更高版本:

$myStr = preg_replace_callback('/#(\d+)#/', function ($matches) use ($fontList) {
    return $fontList[$matches[1]];
}, $myStr);

Example

如果您只想在引号括起来时更改#number#

$myStr = preg_replace_callback('/"#(\d+)#"/', function ($matches) use ($fontList) {
    return '"' . $fontList[$matches[1]] . '"';
}, $myStr);

Example