diff --git a/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php b/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php index c1eb9622c5..c895888bc9 100644 --- a/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php +++ b/src/Symfony/Component/DependencyInjection/ParameterBag/ParameterBag.php @@ -139,7 +139,7 @@ class ParameterBag implements ParameterBagInterface foreach ($this->parameters as $key => $value) { try { $value = $this->resolveValue($value); - $parameters[$key] = is_string($value) ? str_replace('%%', '%', $value) : $value; + $parameters[$key] = $this->unescapeString($value); } catch (ParameterNotFoundException $e) { $e->setSourceKey($key); @@ -235,4 +235,22 @@ class ParameterBag implements ParameterBagInterface { return $this->resolved; } + + private function unescapeString($value) + { + if (is_string($value)) { + return str_replace('%%', '%', $value); + } + + if (is_array($value)) { + $result = array(); + foreach ($value as $k => $v) { + $result[$k] = $this->unescapeString($v); + } + + return $result; + } + + return $value; + } }