Pretty straightforward; I can't seem to find anything definitive regarding PHP's preg_replace()
supporting named backreferences:
// should match, replace, and output: user/profile/foo
$string = 'user/foo';
echo preg_replace('#^user/(?P<id>[^/]+)$#Di', 'user/profile/(?P=id)', $string);
This is a trivial example, but I'm wondering if this syntax, (?P=name)
is simply not supported. Syntactical issue, or non-existent functionality?
you can use this :
then you can use either
\g<name> ${name} or $+{name}
as reference in your replace statement.cf (http://www.rexegg.com/regex-disambiguation.html#namedcapture)
preg_replace
does not support named backreferences.preg_replace_callback
supports named backreferences, but after PHP 5.3, so expect it to fail on PHP 5.2 and below.preg_replace
does not supported named subpatterns yet.They exist:
http://www.php.net/manual/en/regexp.reference.back-references.php
With preg_replace_callback:
Or even quicker