From:             [EMAIL PROTECTED]
Operating system: Linux 2.2.19
PHP version:      4.2.0
PHP Bug Type:     Regexps related
Bug description:  ereg_replace substitution behaving badly

Hi,
I have just downloaded PHP4.0.2 and several pieces of code broke because
ereg_replace() seemed to be working incorrectly:

if for example I did the following:

$str = "word1-word2";
$str = ereg_replace("^([^-]*)-(.*)", '\1+\2', $str);

it works as expected, ($str == "word1+word2")

The problem arises if one of the parenthasized subexpression is empty the
\x (where x is the number of the subexpression) in the replace string does
not get replaced at all, instead of with the empty string eg:

$str = "-word2";
$str = ereg_replace("^([^-]*)-(.*)", '\1+\2', $str);

for this example I'd expect the result to be ($str == "+word2") but
instead you get ($str == "\1+word2") because \1 is empty.

I don't believe that this is meant to happen but if it is how are we meant
to deal with such a case?

-- 
Edit bug report at http://bugs.php.net/?id=16786&edit=1
-- 
Fixed in CVS:        http://bugs.php.net/fix.php?id=16786&r=fixedcvs
Fixed in release:    http://bugs.php.net/fix.php?id=16786&r=alreadyfixed
Need backtrace:      http://bugs.php.net/fix.php?id=16786&r=needtrace
Try newer version:   http://bugs.php.net/fix.php?id=16786&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=16786&r=support
Expected behavior:   http://bugs.php.net/fix.php?id=16786&r=notwrong
Not enough info:     http://bugs.php.net/fix.php?id=16786&r=notenoughinfo
Submitted twice:     http://bugs.php.net/fix.php?id=16786&r=submittedtwice

Reply via email to