svn: /php/php-src/trunk/ NEWS UPGRADING ext/spl/internal/regexiterator.inc ext/spl/spl_iterators.c ext/spl/spl_iterators.h
ext/spl/tests/regexiterator_getregex.phpt
| From: | Adam Harvey | Date: | Thu, 06 Jan 2011 02:32:02 +0000 |
| Subject: | svn: /php/php-src/trunk/ NEWS UPGRADING ext/spl/internal/regexiterator.inc ext/spl/spl_iterators.c ext/spl/spl_iterators.h ext/spl/tests/regexiterator_getregex.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-64281@lists.php.net to get a copy of this message | ||
aharvey Thu, 06 Jan 2011 02:32:02 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=307147
Log:
Implement request #53659 (Implementing RegexIterator::getRegex() method). Patch
by Joshua Thijssen.
Bug: http://bugs.php.net/53659 (Assigned) Implementing
RegexIterator::getRegex() method
Changed paths:
U php/php-src/trunk/NEWS
U php/php-src/trunk/UPGRADING
U php/php-src/trunk/ext/spl/internal/regexiterator.inc
U php/php-src/trunk/ext/spl/spl_iterators.c
U php/php-src/trunk/ext/spl/spl_iterators.h
A php/php-src/trunk/ext/spl/tests/regexiterator_getregex.phpt
Modified: php/php-src/trunk/NEWS
===================================================================
--- php/php-src/trunk/NEWS 2011-01-06 02:24:49 UTC (rev 307146)
+++ php/php-src/trunk/NEWS 2011-01-06 02:32:02 UTC (rev 307147)
@@ -182,6 +182,7 @@
either is present at compile time. (Rasmus)
- Improved SPL extension:
+ . Added RegexIterator::getRegex() method. (Joshua Thijssen)
. Added SplObjectStorage::getHash() hook. (Etienne)
. Added SplFileInfo::getExtension(). FR #48767. (Peter Cowburn)
Modified: php/php-src/trunk/UPGRADING
===================================================================
--- php/php-src/trunk/UPGRADING 2011-01-06 02:24:49 UTC (rev 307146)
+++ php/php-src/trunk/UPGRADING 2011-01-06 02:32:02 UTC (rev 307147)
@@ -353,6 +353,9 @@
- ReflectionClass::getTraitAliases()
- ReflectionParameter::canBePassedByValue()
+ - RegexIterator
+ - RegexIterator::getRegex()
+
- PDO_dblib
- PDO::newRowset()
Modified: php/php-src/trunk/ext/spl/internal/regexiterator.inc
===================================================================
--- php/php-src/trunk/ext/spl/internal/regexiterator.inc 2011-01-06 02:24:49 UTC (rev 307146)
+++ php/php-src/trunk/ext/spl/internal/regexiterator.inc 2011-01-06 02:32:02 UTC (rev 307147)
@@ -158,6 +158,13 @@
{
$this->preg_flags = $preg_flags;
}
+
+ /** @return current regular expression
+ */
+ function getRegex()
+ {
+ return $this->regex;
+ }
}
?>
Modified: php/php-src/trunk/ext/spl/spl_iterators.c
===================================================================
--- php/php-src/trunk/ext/spl/spl_iterators.c 2011-01-06 02:24:49 UTC (rev 307146)
+++ php/php-src/trunk/ext/spl/spl_iterators.c 2011-01-06 02:32:02 UTC (rev 307147)
@@ -1465,6 +1465,7 @@
}
intern->u.regex.mode = mode;
intern->u.regex.regex = estrndup(regex, regex_len);
+ intern->u.regex.regex_len = regex_len;
intern->u.regex.pce = pcre_get_compiled_regex_cache(regex, regex_len TSRMLS_CC);
if (intern->u.regex.pce == NULL) {
/* pcre_get_compiled_regex_cache has already sent error */
@@ -1941,6 +1942,19 @@
}
} /* }}} */
+/* {{{ proto string RegexIterator::getRegex()
+ Returns current regular expression */
+SPL_METHOD(RegexIterator, getRegex)
+{
+ spl_dual_it_object *intern = (spl_dual_it_object*)zend_object_store_get_object(getThis()
TSRMLS_CC);
+
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+
+ RETURN_STRINGL(intern->u.regex.regex, intern->u.regex.regex_len, 1);
+} /* }}} */
+
/* {{{ proto bool RegexIterator::getMode()
Returns current operation mode */
SPL_METHOD(RegexIterator, getMode)
@@ -2205,6 +2219,7 @@
SPL_ME(RegexIterator, setFlags, arginfo_regex_it_set_flags, ZEND_ACC_PUBLIC)
SPL_ME(RegexIterator, getPregFlags, arginfo_recursive_it_void, ZEND_ACC_PUBLIC)
SPL_ME(RegexIterator, setPregFlags, arginfo_regex_it_set_preg_flags, ZEND_ACC_PUBLIC)
+ SPL_ME(RegexIterator, getRegex, arginfo_recursive_it_void, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
Modified: php/php-src/trunk/ext/spl/spl_iterators.h
===================================================================
--- php/php-src/trunk/ext/spl/spl_iterators.h 2011-01-06 02:24:49 UTC (rev 307146)
+++ php/php-src/trunk/ext/spl/spl_iterators.h 2011-01-06 02:32:02 UTC (rev 307147)
@@ -154,6 +154,7 @@
long preg_flags;
pcre_cache_entry *pce;
char *regex;
+ uint regex_len;
} regex;
#endif
} u;
Added: php/php-src/trunk/ext/spl/tests/regexiterator_getregex.phpt
===================================================================
--- php/php-src/trunk/ext/spl/tests/regexiterator_getregex.phpt (rev 0)
+++ php/php-src/trunk/ext/spl/tests/regexiterator_getregex.phpt 2011-01-06 02:32:02 UTC (rev 307147)
@@ -0,0 +1,29 @@
+--TEST--
+SPL: RegexIterator::getRegex() basic tests
+--CREDITS--
+Joshua Thijssen <jthijssen@noxlogic.nl>
+--FILE--
+<?php
+
+$array = array('cat', 'hat', 'sat');
+$iterator = new ArrayIterator($array);
+
+# Simple regex
+$regexIterator = new RegexIterator($iterator, '/.at/');
+var_dump($regexIterator->getRegex());
+
+# Empty regular expression
+$regexIterator = new RegexIterator($iterator, '//');
+var_dump($regexIterator->getRegex());
+
+# "Complex" email regular expression
+$regexIterator = new RegexIterator($iterator,
'|\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b|');
+var_dump($regexIterator->getRegex());
+
+
+
+?>
+--EXPECT--
+string(5) "/.at/"
+string(2) "//"
+string(43) "|\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b|"