ID: 40195
Updated by: [EMAIL PROTECTED]
Reported By: tsasaki99 at yahoo dot co dot jp
-Status: Assigned
+Status: Closed
Bug Type: PCRE related
Operating System: Debian GNU/Linux etch
PHP Version: 5.2.0
Assigned To: andrei
New Comment:
bundled pcre upgrade to version 7.0.
Previous Comments:
------------------------------------------------------------------------
[2007-01-22 21:43:20] [EMAIL PROTECTED]
I confirm this is a bug in pcre. so let's ask Andrei to upgrade PCRE to
version 7, maybe for PHP 5.2.2 (assign back to me if you want me to do
it).
------------------------------------------------------------------------
[2007-01-22 14:59:41] tsasaki99 at yahoo dot co dot jp
Description:
------------
PCRE (Perl Compatible Regular Expression library) Version 6.7 04-Jul-06
seems to have a bug. This version is included in PHP 5.2 and PHP 6.
Consequently preg_match() function in PHP seems to inherit the bug. The
main issue is summarized as follows.
* case1 ^(/([a-z]*))*$ matches //abcde
* case2 ^(/(?:[a-z]*))*$ doesn't match //abcde
* case3 ^(/([a-z]*))*$ matches /a/abcde
* case4 ^(/(?:[a-z]*))*$ matches /a/abcde
The second regex should match. Not only PHP 5 but also PHP 6 CVS
snapshot still includes PCRE version 6.7 04-Jul-06. So, I report the
issue.
The complete report and examination results are in
http://geeklog.windy.cx/article.php/20070122224722545
Reproduce code:
---------------
preg_match("@^(/(?:[a-z]*))*$@", "//abcde", &$m);
var_dump($m);
Expected result:
----------------
array(2) {
[0]=>
string(7) "//abcde"
[1]=>
string(6) "/abcde"
}
Actual result:
--------------
array(0) {
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=40195&edit=1