ID:               50605
 User updated by:  serovov at gmail dot com
 Reported By:      serovov at gmail dot com
 Status:           Bogus
 Bug Type:         PCRE related
 Operating System: *
 PHP Version:      5.2.12
 New Comment:

No! it will return:
array (
  0 => '--',
  1 => 'a',
  2 => 'a',
  3 => 'a',
  4 => '--',
  5 => 'b',
  6 => 'b',
  7 => 'b',
  8 => '--',
  9 => 'c',
  10 => 'c',
  11 => '--',
)

So you always don't know number of matched elements and you can not
normally use it; How i will know is it delimiter or delimited text ?


Previous Comments:
------------------------------------------------------------------------

[2009-12-29 13:51:55] [email protected]

To get the expected (OR) result, you need one more set of parenthesis:

{(((a|b)|c))}six

Then it includes all patterns..

------------------------------------------------------------------------

[2009-12-29 12:57:38] serovov at gmail dot com

Description:
------------
When you use preg_split with PREG_SPLIT_DELIM_CAPTURE i have different
count of matches. 

Reproduce code:
---------------
<?php
$res1 = preg_split(
    '{((a|b)|c)}six',
    '--a--b--c--',
    0,
    PREG_SPLIT_DELIM_CAPTURE
);
var_export($res1);

Expected result:
----------------
array (
  0 => '--',
  1 => 'a',
  3 => '--',
  4 => 'b',
  6 => '--',
  7 => 'c',
  8 => '--',
)
OR:
array (
  0 => '--',
  1 => 'a', // All patterns
  2 => 'a', // First group
  3 => 'a', // Second group
  4 => '--',
  5 => 'b',
  6 => 'b',
  7 => 'b',
  8 => '--',
  9 => 'c', // Zero group
  10 => 'c', // First group
  11 => '', // Second group: None-match
  12 => '--',
)

Actual result:
--------------
array (
  0 => '--',
  1 => 'a',
  2 => 'a',
  3 => '--',
  4 => 'b',
  5 => 'b',
  6 => '--',
  7 => 'c',
  8 => '--',
)


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=50605&edit=1

Reply via email to