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
