String BC break \{$a}

php.internals

Christian Schneider

19 years ago
Hi there, looking around quickly I couldn't find any documentation on the following change: $a = "foo"; echo "\{$a}"; PHP 4.4.4: {foo} PHP 5.2.1: \{foo} I didn't check which exact version introduced this change. Some third-party code used this obscure construct and failed when migrating from PHP 4 to PHP 5. Was this intentional and if yes, should it be documented in http://www.php.net/manual/en/migration5.incompatible.php ? If this has been discussed before then I apologize. Cheers, - Chris

Tomas Kuliavas

19 years ago
> Hi there, > looking around quickly I couldn't find any documentation on the > following change: > $a = "foo"; echo "\{$a}"; > > PHP 4.4.4: {foo} > PHP 5.2.1: \{foo} > > I didn't check which exact version introduced this change. Some > third-party code used this obscure construct and failed when migrating > from PHP 4 to PHP 5. > > Was this intentional and if yes, should it be documented in > http://www.php.net/manual/en/migration5.incompatible.php ? > > If this has been discussed before then I apologize.
It was changed in 5.1.0-5.1.1 versions. According to PHP Manual (http://www.php.net/language.types.string) curly brackets are not escaped with backslash. Escape worked in older PHP versions. It does not work in 5.1.1+. http://bugs.php.net/31341 http://bugs.php.net/35411