PHP 4.0 Bug #9029 Updated: preg_split inconsistency
| From: | derick@php.net | Date: | Wed, 31 Jan 2001 13:43:34 +0000 |
| Subject: | PHP 4.0 Bug #9029 Updated: preg_split inconsistency | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-45450@lists.php.net to get a copy of this message | ||
ID: 9029
Updated by: derick
Reported By: anil@recoil.org
Old-Status: Open
Status: Closed
Bug Type: PCRE related
Assigned To:
Comments:
You have to escape the \'s (as per hint from Wico de Leeuw)
Previous Comments:
---------------------------------------------------------------------------
[2001-01-31 08:13:21] anil@recoil.org
While trying to write a simple Scheme parser in PHP, we encountered this problem:
In perl, you can capture the delimiters passed to split() by enclosing the portion with brackets, in
the regexp. This does not work in PHP.
For example, here is the perl script, and its output:
#!/usr/bin/perl
use Data::Dumper;
$_ = '(define heshe (if (equal gender "Male") "He" "She"))
';
@b = split /([()])/;
print Dumper(@b);
Output:
$VAR1 = '';
$VAR2 = '(';
$VAR3 = 'define heshe ';
$VAR4 = '(';
$VAR5 = 'if ';
$VAR6 = '(';
$VAR7 = 'equal gender "Male"';
$VAR8 = ')';
$VAR9 = ' "He" "She"';
$VAR10 = ')';
$VAR11 = '';
$VAR12 = ')';
$VAR13 = ' ';
But in PHP:
<? $a = '(define heshe (if (equal gender "Male") "He" "She"))
';
$b = preg_split('/([()])/', $a);
var_dump($b); ?>
Outputs:
array(7) {
[0]=>
string(0) ""
[1]=>
string(13) "define heshe "
[2]=>
string(3) "if "
[3]=>
string(19) "equal gender "Male""
[4]=>
string(11) " "He" "She""
[5]=>
string(0) ""
[6]=>
string(1) " "
}
The brackets aren't captured, which makes the Scheme parsing a bit difficult :-) There are
other ways to do this, of course, but the preg_split() would be the simplest and the most efficient
way to do it, as far as we can see.
I noticed that the PCRE libraries are only at version 3.0 in PHP, and that 3.4 is available from the
main site. I'll try updating to that, and see if it solves this.
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=9029