diff options
author | Etienne Kneuss <colder@php.net> | 2014-04-09 11:36:36 +0200 |
---|---|---|
committer | Etienne Kneuss <colder@php.net> | 2014-04-09 11:36:36 +0200 |
commit | 6006a3ed5164b7a1e1c68482883c73b6716b10fc (patch) | |
tree | 1c52e19745f10c0fd601b1f84e8825ae889a3ad2 /ext/spl | |
parent | 2cdf38b7a0a9c697885f9fdfb3d5f04f5186a3ec (diff) | |
parent | a95a6e93ee6f4e52212a1308887f195c8ed5c803 (diff) | |
download | php-git-6006a3ed5164b7a1e1c68482883c73b6716b10fc.tar.gz |
Merge branch 'PHP-5.5' into PHP-5.6
Diffstat (limited to 'ext/spl')
-rw-r--r-- | ext/spl/spl_iterators.c | 3 | ||||
-rw-r--r-- | ext/spl/tests/bug66702.phpt | 40 |
2 files changed, 42 insertions, 1 deletions
diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index a89fd548c5..679fc85af1 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -2055,7 +2055,7 @@ SPL_METHOD(RegexIterator, accept) } if (intern->u.regex.flags & REGIT_INVERTED) { - RETVAL_BOOL(Z_LVAL_P(return_value)); + RETVAL_BOOL(! Z_LVAL_P(return_value)); } if (use_copy) { @@ -3692,6 +3692,7 @@ PHP_MINIT_FUNCTION(spl_iterators) #if HAVE_PCRE || HAVE_BUNDLED_PCRE REGISTER_SPL_SUB_CLASS_EX(RegexIterator, FilterIterator, spl_dual_it_new, spl_funcs_RegexIterator); REGISTER_SPL_CLASS_CONST_LONG(RegexIterator, "USE_KEY", REGIT_USE_KEY); + REGISTER_SPL_CLASS_CONST_LONG(RegexIterator, "INVERT_MATCH",REGIT_INVERTED); REGISTER_SPL_CLASS_CONST_LONG(RegexIterator, "MATCH", REGIT_MODE_MATCH); REGISTER_SPL_CLASS_CONST_LONG(RegexIterator, "GET_MATCH", REGIT_MODE_GET_MATCH); REGISTER_SPL_CLASS_CONST_LONG(RegexIterator, "ALL_MATCHES", REGIT_MODE_ALL_MATCHES); diff --git a/ext/spl/tests/bug66702.phpt b/ext/spl/tests/bug66702.phpt new file mode 100644 index 0000000000..fedfc869a8 --- /dev/null +++ b/ext/spl/tests/bug66702.phpt @@ -0,0 +1,40 @@ +--TEST-- +Bug #66702 (RegexIterator inverted result works as expected) +--FILE-- +<?php +/** + * @author Joshua Thijssen <jthijssen+php@noxlogic.nl> + */ + +$it = new \ArrayIterator(array("foo", "bar", "baz")); +$it2 = new \RegexIterator($it, "/^ba/", \RegexIterator::MATCH); +print_r(iterator_to_array($it2)); +$it2 = new \RegexIterator($it, "/^ba/", \RegexIterator::MATCH, \RegexIterator::INVERT_MATCH); +print_r(iterator_to_array($it2)); + +$it = new \ArrayIterator(array("foo" => 1, "bar" => 2, "baz" => 3)); +$it2 = new \RegexIterator($it, "/^ba/", \RegexIterator::MATCH, \RegexIterator::USE_KEY); +print_r(iterator_to_array($it2)); +$it2 = new \RegexIterator($it, "/^ba/", \RegexIterator::MATCH, \RegexIterator::USE_KEY | \RegexIterator::INVERT_MATCH); +print_r(iterator_to_array($it2)); + +--EXPECTF-- +Array +( + [1] => bar + [2] => baz +) +Array +( + [0] => foo +) +Array +( + [bar] => 2 + [baz] => 3 +) +Array +( + [foo] => 1 +) + |