Doc #81284 [Com]: str_getcsv cant parse with multibyte delimiter

From: Date: Fri, 23 Jul 2021 13:40:59 +0000
Subject: Doc #81284 [Com]: str_getcsv cant parse with multibyte delimiter
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-18985@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=81284&edit=1 ID: 81284 Comment by: mx03 at volny dot cz Reported by: mx03 at volny dot cz Summary: str_getcsv cant parse with multibyte delimiter Status: Open Type: Documentation Problem Package: Strings related PHP Version: Irrelevant Block user comment: N Private report: N New Comment: If the delimiter is a utf8 string, one char is one char, even if it is multibyte. And the note sounds like str_getcsv support utf8 strings are fully supported. "The locale settings are taken into account by this function. If LC_CTYPE is e.g. en_US.UTF-8, strings in one-byte encodings may be read wrongly by this function." But it is only supported in the $string parameter, and not in the $separator. There should at least a note that describes this problem like with strlen only reads the amount of bytes. Previous Comments: ------------------------------------------------------------------------ [2021-07-23 13:23:53] cmb@php.net Well, documentation says "one character", what is misleading. ------------------------------------------------------------------------ [2021-07-23 13:22:22] cmb@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php ------------------------------------------------------------------------ [2021-07-23 13:01:13] mx03 at volny dot cz Description: ------------ Separator can be only one character that is not multibyte. if setlocale is utf8, it cant parse the csv: https://3v4l.org/MiD3B if setlocale is not utf8, it parses the string, but the result has the 2 additional bytes: https://3v4l.org/ohc4Q Test script: --------------- setlocale(LC_CTYPE, "en_US.UTF-8"); $test = "❤"; $line = "test1❤test2❤test3"; $header = str_getcsv($line, $test); var_dump($header); Expected result: ---------------- array(3) { [0]=> string(5) "test1" [1]=> string(7) "test2" [2]=> string(7) "test3" } Actual result: -------------- array(1) { [0]=> string(21) "test1❤test2❤test3" } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=81284&edit=1

« previous php.doc.bugs (#18985) next »