ID: 44923
Updated by: [EMAIL PROTECTED]
Reported By: tokul at users dot sourceforge dot net
Status: Open
-Bug Type: PCRE related
+Bug Type: Regexps related
Operating System: Linux Debian Etch
PHP Version: 6CVS-2008-05-06 (snap)
New Comment:
PCRE and ereg_* have different syntaxes. So wrapping ereg to pcre will
break most regexes.
Previous Comments:
------------------------------------------------------------------------
[2008-08-12 16:38:01] [EMAIL PROTECTED]
For unicode aware regexps use PCRE. The old ereg stuff should be
provided as wrapper functions which uses PCRE underneath though.
------------------------------------------------------------------------
[2008-05-06 12:06:03] [EMAIL PROTECTED]
This is expected, the code isn't prepared to works with unicode
strings.
Actually it only use REG_EXTENDED with binary strings, and convert the
unicode string to normal string.
------------------------------------------------------------------------
[2008-05-06 03:59:56] tokul at users dot sourceforge dot net
Description:
------------
expressions that work in older versions fail on PHP6
unicode.semantics=on
Compared 5.2-dev, 5.3-dev and 6.0-dev snapshots
Reproduce code:
---------------
$line = "* 469 EXISTS\r\n";
if (ereg("[^ ]+ +([^ ]+) +EXISTS", $line, $match)) {
var_dump($match[1]);
} else {
var_dump(false);
}
$line = "* 469 FETCH (UID 508 BODY[1]<0> {154}\r\n";
if (ereg('\\{([^\\}]*)\\}', $line, $match)) {
var_dump($match[1]);
} else {
var_dump(false);
}
Expected result:
----------------
string(3) "469"
string(3) "154"
Actual result:
--------------
bool(false)
Warning: ereg(): REG_BADRPT in
/home/tomas/testbeds/test/php60/bin/ereg.php on line 10
bool(false)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=44923&edit=1