Req #81469 [Opn]: preg_replace(): add support for named capture groups
| From: | nikic@php.net | Date: | Thu, 23 Sep 2021 15:57:32 +0000 |
| Subject: | Req #81469 [Opn]: preg_replace(): add support for named capture groups | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-236784@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81469&edit=1
ID: 81469
Updated by: nikic@php.net
Reported by: wim at squeezely dot tech
Summary: preg_replace(): add support for named capture groups
Status: Open
Type: Feature/Change Request
Package: PCRE related
PHP Version: Irrelevant
Block user comment: N
Private report: N
New Comment:
TBH I don't think this is worthwhile anymore at this point. With preg_replace_callback you can
do:
preg_replace_callback('/(?<namedGroup>[a-z]+)$/', fn($m) =>
"ice-cream-with-$m[namedGroup]", 'I-like-chocolate-sprinkles'));
Which is not much worse than dedicated syntax, and gives you the full generality of PHP without any
questions about edge-case behavior.
Previous Comments:
------------------------------------------------------------------------
[2021-09-23 13:01:44] wim at squeezely dot tech
Description:
------------
Would it be possible to add support for named capture groups to preg_replace()?
php > var_dump(preg_replace('/([a-z]+)$/', 'ice-cream-with-${1}',
'I-like-chocolate-sprinkles'));
string(41) "I-like-chocolate-ice-cream-with-sprinkles"
Add support for:
var_dump(preg_replace('/(?<namedGroup>[a-z]+)$/',
'ice-cream-with-${namedGroup}', 'I-like-chocolate-sprinkles'));
Test script:
---------------
php > var_dump(preg_replace('/(?<namedGroup>[a-z]+)$/',
'ice-cream-with-${namedGroup}', 'I-like-chocolate-sprinkles'));
Expected result:
----------------
string(41) "I-like-chocolate-ice-cream-with-sprinkles"
Actual result:
--------------
string(45) "I-like-chocolate-ice-cream-with-${namedGroup}"
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81469&edit=1