preg_replace和花括号

时间:2013-03-17 05:29:45

标签: php regex

是否可以使用preg_replace()substr()将一个值替换为另一个值,然后删除在替换期间添加的不需要的内容?

即,我有这段代码:

$vars = array(
    "{VAR1}",
);

$replace = array(
    "black",
);

$styles = preg_replace($vars, $replace, $styles);

我想要做的是,对于样式表中{VAR1}的每个实例,我想用“黑色”替换它,从而创建一个基本的样式表变量解析器。我看到的问题是,当我在print_r()上使用$replace时,我得到了正确的值,黑色。然而,当我通过preg_replace提供它时,我得到{black}。我试图用这个来解决这个问题:

foreach($replace as $replaced)
{
    $replaced = substr($replace, 1, -1);
}

但是,根本没有更改!是否可以这种方式使用substr()preg_replace()?或者有更好的方法来尝试解析它。

2 个答案:

答案 0 :(得分:2)

更好的工具是strtr

您可以像这样定义替换:

$replacements = array(
    "{VAR1}" => "black"
);

然后:

$styles = strtr($styles,$replacements);

答案 1 :(得分:1)

您的问题不在$replace,而在于$vars 您使用大括号作为RegEx分隔符。

试试这个:

$vars = array(
    "/{VAR1}/",
    ...
);