From:             [EMAIL PROTECTED]
Operating system: Win98
PHP version:      4.0.6
PHP Bug Type:     PCRE related
Bug description:  preg_match incorrectly parses data with binary zero

$data = "abc\0\0de";  # \0, \x00 - never mind
preg_match('/ab(.{4})e/s', $data, $res);

echo(bin2hex($data));   # 61626300006465
echo(bin2hex($res[0])); # 616263
echo(bin2hex($res[1])); # 63

PHP4.0.6/Win32 (binary distr.)

>From PHP PCRE docs:

--------------
4. Though binary zero characters are supported in the subject string, they
are 
not allowed in a pattern string because it is passed as a normal C
string,
terminated by zero. The escape sequence "\0" can be used in the pattern
to
represent a binary zero.
-----------

>From original PCRE docs (http://www.pcre.org/man.txt):

--------

The subject string is passed as a pointer in subject, a
length in length, and a starting offset in startoffset.
Unlike the pattern string, the subject may contain binary
zero characters. When the starting offset is zero, the
search for a match starts at the beginning of the subject,
and this is by far the most common case.

---------

by the way, it seems that preg_replace() works correctly. Problems with
preg_match()

please report if i'm wrong and it isn't a bug.

-- 
Edit bug report at: http://bugs.php.net/?id=14173&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to