ID: 22366
Comment by: eagleprof at yahoo dot com dot au
Reported By: csaba at alum dot mit dot edu
Status: Bogus
Bug Type: PCRE related
Operating System: Win 2K
PHP Version: 4.3.0
New Comment:
This is not a bogus bug. I can repeat it too. I have a Win2K/IIS 5.0
setup using PHP v4.3.2.
As csaba says, the problem occurs when you have four parameters and
attempt to pass the PREG_OFFSET_CAPTURE flag by itself as the fourth
parameter. The workaround is to explicitly set the sort order with the
PREG_OFFSET_CAPTURE flag.
Previous Comments:
------------------------------------------------------------------------
[2003-02-23 02:52:13] [EMAIL PROTECTED]
When you use preg_match_all() with only 3 paramaters,
then PREG_PATTERN_ORDER is assumed for order flag.
------------------------------------------------------------------------
[2003-02-21 17:01:39] csaba at alum dot mit dot edu
The following code gives me an error message of:
Wrong value for parameter 4 in call to preg_match_all() ...
if I replace the PREG_OFFSET_CAPTURE with either
PREG_OFFSET_CAPTURE | PREG_SET_ORDER
or PREG_OFFSET_CAPTURE | PREG_PATTERN_ORDER
then it works as advertised.
This contradicts the documentation statement:
If no order flag is given, PREG_PATTERN_ORDER is assumed
$page = "<html><head></head><body><form>" .
"<input onClick='alert(\"Hi Mom\")' " .
"value='Click me'>" .
"<input onClick='alert(\"Hi Dad\")' " .
"value=\"Dad's button\">" .
"</form></body></html>";
$regexp = "/<input[^>]*(value=[^>]*)>/";
if (!preg_match_all($regexp, $page, $mtch,
PREG_OFFSET_CAPTURE))
print "<br>Could not match";
else print "<br>Found matches";
This is on my PHP 4.3.0 / Apache 2.0.43 / Win 2K Pro system
Csaba Gabor from New York
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22366&edit=1