]> granicus.if.org Git - php/commitdiff
MFB(r-1.333.2.27) Bugfix 23654. If subject is an array and it contains other arrays...
authorSara Golemon <pollita@php.net>
Fri, 16 May 2003 23:30:08 +0000 (23:30 +0000)
committerSara Golemon <pollita@php.net>
Fri, 16 May 2003 23:30:08 +0000 (23:30 +0000)
ext/standard/string.c

index a61814e16abab3582180e01a4d620de32664a0df..ae9f8da38d05c0e0f4a7ce6c80d629b0c4f63622 100644 (file)
@@ -3162,8 +3162,12 @@ static void php_str_replace_common(INTERNAL_FUNCTION_PARAMETERS, int case_sensit
                /* For each subject entry, convert it to string, then perform replacement
                   and add the result to the return_value array. */
                while (zend_hash_get_current_data(Z_ARRVAL_PP(subject), (void **)&subject_entry) == SUCCESS) {
-                       MAKE_STD_ZVAL(result);
-                       php_str_replace_in_subject(*search, *replace, subject_entry, result, case_sensitivity, (argc > 3) ? &count : NULL);
+                       if (Z_TYPE_PP(subject_entry) != IS_ARRAY && Z_TYPE_PP(subject_entry) != IS_OBJECT) {
+                               MAKE_STD_ZVAL(result);
+                               php_str_replace_in_subject(*search, *replace, subject_entry, result, case_sensitivity, (argc > 3) ? &count : NULL);
+                       } else {
+                               result = *subject_entry;
+                       }
                        /* Add to return array */
                        switch (zend_hash_get_current_key_ex(Z_ARRVAL_PP(subject), &string_key,
                                                                                                &string_key_len, &num_key, 0, NULL)) {