Re: RFC: Deprecate mb_ereg_replace eval option
| From: | Rouven Weßling | Date: | Wed, 06 Jan 2016 17:34:54 +0000 |
| Subject: | Re: RFC: Deprecate mb_ereg_replace eval option | ||
| References: | 1 2 3 4 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-90209@lists.php.net to get a copy of this message | ||
> On 06 Jan 2016, at 18:03, Dan Ackroyd <danack@basereality.com> wrote:
>
> This is possibly a stupid question, but one that needs to be asked anyway:
Certainly not a stupid question.
> Have you checked that simply converting code that uses
> mb_eregi_replace to using mb_ereg_replace_callback with the i flag
> behaves the same in all circumstances?
Well the _callback function obviously behaves differently with regards to the, well, callback.
I haven’t actually tested it (kinda tough for “all situations”), but if we compare
mb_eregi_replace with mb_ereg_replace with the i options is quite easy to see that they behave the
same by looking at the source.
mb_eregi_replace (https://github.com/php/php-src/blob/master/ext/mbstring/php_mbregex.c#L1035) calls
_php_mb_regex_ereg_replace_exec with the flag ONIG_OPTION_IGNORECASE (mb_ereg_replace calls the same
function without that flag). When options are set on the function call, those are passed together
with that flag to
_php_mb_regex_init_options
(https://github.com/php/php-src/blob/master/ext/mbstring/php_mbregex.c#L578) which sets the
ONIG_OPTION_IGNORECASE when the i option is specified. After that both functions take exactly the
same path.
I hope that clears it up.
Best regards
Rouven