As a library maintainer I agree with Stanislav Malyshev . I'm currently
working on a polyfill in League\Csv to enable usage of the empty string
with the escape character. While providing such feature is straightforward
for the insertion part, doing the same for the reading part in quite
complex because of how PHP fgetcsv works.
Removing the escape character from fgetcsv means that any decent library
will have to provide a polyfill to enable correctly reading legacy CSV
produced with the escape character. And quite frankly seeing how broken the
escape character implementation is, it's easier to keep it in PHP codebase
to ease parsing while making sure it is no longer the default.
So while I would prefer to have a PHP9 free of the escape character
mechanism keeping the mechanism via the fgetcsv function for legacy
purposes seems reasonable. Of course, this should be highlighted in the
documentation.