diff --git a/src/Symfony/Components/Yaml/Inline.php b/src/Symfony/Components/Yaml/Inline.php index 854f4bba59..b94f7a15ea 100644 --- a/src/Symfony/Components/Yaml/Inline.php +++ b/src/Symfony/Components/Yaml/Inline.php @@ -37,15 +37,30 @@ class Inline return ''; } + if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) + { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + switch ($value[0]) { case '[': - return self::parseSequence($value); + $result = self::parseSequence($value); + break; case '{': - return self::parseMapping($value); + $result = self::parseMapping($value); + break; default: - return self::parseScalar($value); + $result = self::parseScalar($value); } + + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + + return $result; } /** diff --git a/src/Symfony/Components/Yaml/Parser.php b/src/Symfony/Components/Yaml/Parser.php index 330f9a1ef6..b47a0dd0b8 100644 --- a/src/Symfony/Components/Yaml/Parser.php +++ b/src/Symfony/Components/Yaml/Parser.php @@ -50,6 +50,12 @@ class Parser $this->currentLine = ''; $this->lines = explode("\n", $this->cleanup($value)); + if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) + { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + $data = array(); while ($this->moveToNextLine()) { @@ -220,6 +226,11 @@ class Parser } } + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + return $value; } @@ -253,6 +264,11 @@ class Parser } } + if (isset($mbEncoding)) + { + mb_internal_encoding($mbEncoding); + } + return empty($data) ? null : $data; }