]> granicus.if.org Git - php/commitdiff
Fix a bug that would not fill in the fifth argument to preg_replace()
authorAndrei Zmievski <andrei@php.net>
Thu, 6 Apr 2006 21:10:45 +0000 (21:10 +0000)
committerAndrei Zmievski <andrei@php.net>
Thu, 6 Apr 2006 21:10:45 +0000 (21:10 +0000)
properly, if the variable was not declared previously.

Zend/zend_arg_defs.c
Zend/zend_modules.h
ext/pcre/TODO [new file with mode: 0644]
ext/pcre/php_pcre.c

index f1ce13a452ddbb9ac20c3980f1ffa91e65b77529..be0601c9c828b46d858ea0dd439484349f94e6e9 100644 (file)
@@ -40,6 +40,14 @@ ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
        ZEND_ARG_PASS_INFO(1)
 ZEND_END_ARG_INFO();
 
+ZEND_BEGIN_ARG_INFO(fifth_arg_force_ref, 0)
+       ZEND_ARG_PASS_INFO(0)
+       ZEND_ARG_PASS_INFO(0)
+       ZEND_ARG_PASS_INFO(0)
+       ZEND_ARG_PASS_INFO(0)
+       ZEND_ARG_PASS_INFO(1)
+ZEND_END_ARG_INFO();
+
 ZEND_BEGIN_ARG_INFO(all_args_by_ref, 1)
 ZEND_END_ARG_INFO();
 
index 8be64b5b018c4d732d54803f6e6d333d1f780e03..57a38a82bb8af85ecb90f707a60238ba15010006 100644 (file)
@@ -36,6 +36,7 @@ extern struct _zend_arg_info first_arg_force_ref[2];
 extern struct _zend_arg_info second_arg_force_ref[3];
 extern struct _zend_arg_info third_arg_force_ref[4];
 extern struct _zend_arg_info fourth_arg_force_ref[5];
+extern struct _zend_arg_info fifth_arg_force_ref[6];
 extern struct _zend_arg_info all_args_by_ref[1];
 
 #define ZEND_MODULE_API_NO 20050922
diff --git a/ext/pcre/TODO b/ext/pcre/TODO
new file mode 100644 (file)
index 0000000..1000c64
--- /dev/null
@@ -0,0 +1,20 @@
+- Allow NULL for $matches argument (helps when using preg_match only for
+  match condition) - might not be possible
+
+- http://bugs.php.net/bug.php?id=36975
+
+- I'd love to see a pattern modifer which says "don't fill $matches except
+  for the overall match and any specific named captures". This would allow
+  (?: ...) to be avoided in a lot of cases.
+  
+  This could make for non-trivial speed enhancements with regexes that have
+  a lot of parens when working on long strings, since you'd not have to  
+  copy them multiple times to the $matches array.
+  
+  Also, it makes $matches much cleaner after a match where you've named the
+  captures you're interested in.
+  
+  (Note that this would not involve the use of PCRE_NO_AUTO_CAPTURE, as
+  that would change the semantics of backreferences)
+
+
index 557898abf3473bd99ca51d11e3be83a80e7177c7..6cd6d27a29877b6f0d5e5708243adefa61e86856 100644 (file)
 
 /* $Id$ */
 
-/*
- * TODO
- *
- * - Allow NULL for $matches argument (helps when using preg_match only for
- *   match condition)
- */
-
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -1622,8 +1615,8 @@ PHP_FUNCTION(preg_grep)
 zend_function_entry pcre_functions[] = {
        PHP_FE(preg_match,                              third_arg_force_ref)
        PHP_FE(preg_match_all,                  third_arg_force_ref)
-       PHP_FE(preg_replace,                    NULL)
-       PHP_FE(preg_replace_callback,   NULL)
+       PHP_FE(preg_replace,                    fifth_arg_force_ref)
+       PHP_FE(preg_replace_callback,   fifth_arg_force_ref)
        PHP_FE(preg_split,                              NULL)
        PHP_FE(preg_quote,                              NULL)
        PHP_FE(preg_grep,                               NULL)