Bug #13439 Updated: unbound .* patterns don't work properly
| From: | msopacua at idg dot nl | Date: | Sat, 08 Jun 2002 12:33:00 +0000 |
| Subject: | Bug #13439 Updated: unbound .* patterns don't work properly | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-9840@lists.php.net to get a copy of this message | ||
ID: 13439
Updated by: msopacua@idg.nl
Reported By: john@scl.co.uk
Status: Open
Bug Type: Regexps related
Operating System: linux 2.2.19
PHP Version: 4.2.1
New Comment:
I think this can be documentation issue - or a bug.
Remember that ereg(i)_replace functions are always 'g' modified. So
that would make it the issue, whether * is greedy.
By nature + is greedy (cause otherwise the 'or more' wouldn't make
sence), but if it's considered, that * isn't greedy, than what php does
is perfectly correct as each 'a' matches .*.
It would at least be consistent if they we're both greedy as .*? isn't
supported and you can't turn of the global behavior.
Previous Comments:
------------------------------------------------------------------------
[2002-06-08 07:50:27] john@scl.co.uk
I'm running linux 2.2.19. I've also tested php 4.0.4pl1
running on linux 2.4.2 and the behaviour is the same.
------------------------------------------------------------------------
[2002-06-07 16:48:57] sniper@php.net
Updated the version..which OS are you running PHP on?
------------------------------------------------------------------------
[2002-06-07 14:48:36] john@scl.co.uk
Derick!
This _is_ a bug! I've now upgraded to 4.2.1 and the
behaviour remains the same. Consider just these two:
ereg_replace('.+','b','aa') -> b
ereg_replace('.*','b','aa') -> bb
and this from man 7 regex:
"An atom followed by `*' matches a sequence
of 0 or more matches of the atom. An atom followed
by `+' matches a sequence of 1 or more matches of
the atom."
How can it NOT be a bug?
------------------------------------------------------------------------
[2002-06-02 13:58:49] derick@php.net
Sorry, but the bug system is not the appropriate forum for asking
support questions. Your problem does not imply a bug in PHP itself.
For a list of more appropriate places to ask for help using PHP,
please visit http://www.php.net/support.php
Thank you for your interest in PHP.
------------------------------------------------------------------------
[2001-09-25 14:41:40] john@scl.co.uk
These 2 are OK:
ereg_replace('..','b','aa') -> b
ereg_replace('.+','b','aa') -> b
But this is wrong:
ereg_replace('.*','b','aa') -> bb
You can "fix" it by binding to the beginning:
ereg_replace('^.*','b','aa') -> b
but not by binding to the end:
ereg_replace('.*$','b','aa') -> bb
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=13439&edit=1