Bug #53823 [Ana]: preg_replace: * qualifier on unicode replace garbles the string
| From: | cmb@php.net | 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