Edit report at https://bugs.php.net/bug.php?id=64730&edit=1
ID: 64730
User updated by: imbolk at gmail dot com
Reported by: imbolk at gmail dot com
Summary: preg_replace_callback vs. preg_replace eval related
Status: Assigned
Type: Feature/Change Request
Package: Regexps related
Operating System: Mac OS X 10.8.3
PHP Version: 5.5.0beta4
Assigned To: laruence
Block user comment: N
Private report: N
New Comment:
Yes, you are quite right.
Previous Comments:
------------------------------------------------------------------------
[2013-04-30 21:09:35] ww dot galen at gmail dot com
Accepting an array of callbacks can lead to unreconcilable ambiguities. For
example:
class A {
function __toString() { ... }
function __invoke($a) { ... }
function foo($a) { ... }
}
function foo($a) { ... }
$a = new A;
preg_replace_callback([..., ...], [$a, 'foo'], $subject);
There are three different ways of interpreting the callback argument, all
equally valid:
1. `(string)$a` and `foo(...)`
2. `$a(...)` and `foo(...)`
3. `$a->foo(...)`
------------------------------------------------------------------------
[2013-04-29 18:03:49] imbolk at gmail dot com
I think it would be better if prey_replace_callback function will accept array
of
callbacks as a 2nd argument.
------------------------------------------------------------------------
[2013-04-29 16:49:45] [email protected]
a simple patch attached, please also see my proposal:
http://news.php.net/php.internals/67199
------------------------------------------------------------------------
[2013-04-29 16:31:42] imbolk at gmail dot com
Oops⦠sorry. My mistake. Test script is:
$repl = [
'/(\d{2}|(?<!\d))([pm])(\d{2}|)([PMc])/e' => function($m) { return
$this->_op($m[3], $m[4], rtrim($this->_op($m[1], $m[2]), ";"))'; },
'/(\d{2}|)([MPmplrc])/e' => function ($m) { return
$this->_op($m[1],
$m[2]); },
];
$str = preg_replace_callback(array_keys($repl), array_values($repl), $str);
------------------------------------------------------------------------
[2013-04-29 16:30:36] [email protected]
The following patch has been added/updated:
Patch Name: sencode_argument.patch
Revision: 1367253036
URL:
https://bugs.php.net/patch-display.php?bug=64730&patch=sencode_argument.patch&revision=1367253036
------------------------------------------------------------------------
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=64730
--
Edit this bug report at https://bugs.php.net/bug.php?id=64730&edit=1