Hi !

I found that following regular expression patern:
/('(([^']*\\')*)([^']*)')/s

works in Perl, but doesn't in PHP.

It is trying to find sting with ' char escaped, like 'It wasn\'t so good'

You may test it with following scripts :

#!/usr/bin/perl
while (<>)
{
print ">$1<\n" while  /('(([^']*\\')*)([^']*)')/gs
}

while such code in PHP 4.0.6:
<?php
$s_test = " 'abc \'  aaa'         sfds'  ' sdfsdfsdfsd' ";
$s_re = <<< EOT
/('(([^']*\\')*)([^']*)')/s
EOT;
  if (preg_match($s_re, $s_test, $as_result)) {
    print_r($as_result);
  } else echo "expression not found\n";}

will return You ALL the string $s_test between first occurence of
' char and the last occurence.

I've been told on #php at irc.php.net that perl regexp handling code
is a part of PHP source and so this effect is not related to bugs of
some external library.

Is there anything I can do about it ?
I wanted to create PHP shell script that parses other scripts looking
onto their code structure and fetching some info from it.

Further I want to properly parse strings like: 'some \\\' single\n\' string'
which seems to be just impossible to be done today.

And I really wouldn't like to switch to Perl.
Is there any hope ? :-)

Waiting for Your answers.

                        Grzegorz Prokopski

System: Debian Potato with some addons from Woody
(but nothing so significant that could affect results - I think)



-- 
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