Dear All

Is this a bug ?

I'm using look-behind assertions within preg_match()
to ignore certain combinations of patterns. E.g. from
ref. manual is: (?<!foo)bar matches "bar" but only
if it's not preceded by "foo".

Here's my test script:
----------------
$line = '$res = foobar("ddd", "dfdf");';
if (preg_match("/(?<!foo)(bar)/", $line, $matches)) {
        echo "Should NOT match foobar, but found: ".$matches[1];
}

$line = '$res = $bar("ddd", "dfdf");';
if (preg_match("/(?<!\$)(bar)/", $line, $matches)) {
        echo "Should NOT match \$bar, but found: ".$matches[1];
}
----------------

In the first preg_match() is correctly ignores the foobar
function name. However the second preg_match() does NOT
ignore the $bar as I expected.

I converted this to Perl and it correctly ignores both!

Is this a bug, or am I missing something ?

using PHP-4.3.10 + apache 1.3.33 + fc 1

Many thanks

Ian
--
Ian Thurlbeck                http://www.stams.strath.ac.uk/
Statistics and Modelling Science, University of Strathclyde
Livingstone Tower, 26 Richmond Street, Glasgow, UK,  G1 1XH
Tel: +44 (0)141 548 3667           Fax: +44 (0)141 552 2079

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to