str_getcsv() in PHP 8.4 and 8.5 works the same as before for basic parsing, but PHP 8.4 introduced important changes regarding the $escape parameter that you must handle to avoid deprecation warnings and potential errors.
Usage and Example
The function parses a CSV-formatted string into an array. The core example from the official documentation works as expected in 8.4/8.5 :
<?php
$string = PHP,Java,Python,Kotlin,Swift ;
$data = str_getcsv($string, escape: \ );var_dump($data);
?>
Output:
array(5) {
[0]=> string(3) "PHP"
[1]=> string(4) "Java"
[2]=> string(6) "Python"
[3]=> string(6) "Kotlin"
[4]=> string(5) "Swift"
}
Critical Changes in PHP 8.4 / 8.5
→$escape Parameter is Deprecated if Omitted: As of PHP 8.4.0, relying on the default value of $escape ("\") is deprecated. You should now explicitly provide it either positionally or via a named argument (as shown in the example above).
→ValueError for Invalid Parameters: PHP 8.4.0 now throws a ValueError if $separator, $enclosure, or $escape is not a single byte (or the empty string for $escape). This means you can no longer pass an empty $enclosure without triggering an error.
→Recommended Value for $escape: The PHP manual strongly recommends setting $escape to an empty string ("").