Bug #53823 [Ana]: preg_replace: * qualifier on unicode replace garbles the string

From: Date: Fri, 05 Jun 2015 13:13:47 +0000
Subject: Bug #53823 [Ana]: preg_replace: * qualifier on unicode replace garbles the string
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-193142@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=53823&edit=1 ID: 53823 Updated by: cmb@php.net Reported by: keith at chaos-realm dot net Summary: preg_replace: * qualifier on unicode replace garbles the string Status: Analyzed Type: Bug Package: PCRE related Operating System: * PHP Version: 5.6.9 -Assigned To: cmb +Assigned To: Block user comment: N Private report: N New Comment: I've added a PR, that also solves #66121. Previous Comments: ------------------------------------------------------------------------ [2015-06-05 12:15:00] cmb@php.net Related To: Bug #66121 ------------------------------------------------------------------------ [2015-06-05 12:03:28] cmb@php.net Related to bug #27103. ------------------------------------------------------------------------ [2015-06-05 01:15:10] cmb@php.net Confirmed: <http://3v4l.org/ueAJv>. > The correct behavior is that when u modifier is used, the > function should always advance by code unit (1 UTF character). Exactly. Thanks for analyzing the issue. :) ------------------------------------------------------------------------ [2014-12-16 11:35:09] nhahtdh at gmail dot com This should be a duplicate to https://bugs.php.net/bug.php?id=66121, since the underlying cause is the same. After matching empty string at the beginning (index 0) and replace it with empty string, the function will try to match at index 0 again but pass a flag to assert non-empty string match, which it obviously fails. Then the function advance the offset by 1 data unit (1 byte in this case) and hilarity ensues. The correct behavior is that when u modifier is used, the function should always advance by code unit (1 UTF character). ------------------------------------------------------------------------ [2012-02-25 09:54:52] robertbasic dot com at gmail dot com Updated the test case showing that preg_filter and preg_replace_callback are affected, too. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=53823 -- Edit this bug report at https://bugs.php.net/bug.php?id=53823&edit=1

« previous php.bugs (#193142) next »