diff options
author | Andrey Hristov <andrey@php.net> | 2003-05-02 10:02:40 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2003-05-02 10:02:40 +0000 |
commit | a894bf5c878410cdb3e403202bbf166f5b0d6d6f (patch) | |
tree | 191c5b8f6d01600b046581a2036f3ae16f4ddbb0 /ext | |
parent | 83a0e508df4d2432281a125e3b5a355c10302d99 (diff) | |
download | php-git-a894bf5c878410cdb3e403202bbf166f5b0d6d6f.tar.gz |
Extending substr_replace().
Every parameter can be mixed (string/array) also the return type.
#see the test file if you need more info.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/standard/string.c | 244 | ||||
-rw-r--r-- | ext/standard/tests/strings/substr_replace.phpt | 812 |
2 files changed, 1019 insertions, 37 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index 89e4fff459..778ccd3b89 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1833,13 +1833,14 @@ PHP_FUNCTION(substr) } /* }}} */ -/* {{{ proto string substr_replace(string str, string repl, int start [, int length]) + +/* {{{ proto mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length]) Replaces part of a string with another string */ PHP_FUNCTION(substr_replace) { zval **str; zval **from; - zval **len; + zval **len = NULL; zval **repl; char *result; int result_len; @@ -1847,61 +1848,230 @@ PHP_FUNCTION(substr_replace) int f; int argc = ZEND_NUM_ARGS(); + HashPosition pos_str, pos_from, pos_repl, pos_len; + zval **tmp_str = NULL, **tmp_from = NULL, **tmp_repl = NULL, **tmp_len= NULL; + + if (argc < 3 || argc > 4 || zend_get_parameters_ex(argc, &str, &repl, &from, &len) == FAILURE) { WRONG_PARAM_COUNT; } - - convert_to_string_ex(str); - convert_to_string_ex(repl); - convert_to_long_ex(from); + if (Z_TYPE_PP(str) != IS_ARRAY) { + convert_to_string_ex(str); + } + if (Z_TYPE_PP(repl) != IS_ARRAY) { + convert_to_string_ex(repl); + } + if (Z_TYPE_PP(from) != IS_ARRAY) { + convert_to_long_ex(from); + } + if (argc > 3) { - convert_to_long_ex(len); - l = Z_LVAL_PP(len); + if (Z_TYPE_PP(len) != IS_ARRAY) { + convert_to_long_ex(len); + l = Z_LVAL_PP(len); + } } else { - l = Z_STRLEN_PP(str); + if (Z_TYPE_PP(str) != IS_ARRAY) { + l = Z_STRLEN_PP(str); + } } - - f = Z_LVAL_PP(from); - /* if "from" position is negative, count start position from the end - * of the string - */ - if (f < 0) { - f = Z_STRLEN_PP(str) + f; - if (f < 0) { - f = 0; + if (Z_TYPE_PP(str) == IS_STRING) { + if ( + (argc == 3 && Z_TYPE_PP(from) == IS_ARRAY) + || + (argc == 4 && Z_TYPE_PP(from) != Z_TYPE_PP(len)) + ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "'from' and 'len' should be of same type - numerical or array "); + RETURN_STRINGL(Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1); + } + if (argc == 4 && Z_TYPE_PP(from) == IS_ARRAY) { + if (zend_hash_num_elements(Z_ARRVAL_PP(from)) != zend_hash_num_elements(Z_ARRVAL_PP(len))) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "'from' and 'len' should have the same number of elements"); + RETURN_STRINGL(Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1); + } } - } else if (f > Z_STRLEN_PP(str)) { - f = Z_STRLEN_PP(str); } + + if (Z_TYPE_PP(str) != IS_ARRAY) { + if (Z_TYPE_PP(from) != IS_ARRAY) { + int repl_len = 0; - /* if "length" position is negative, set it to the length - * needed to stop that many chars from the end of the string - */ - if (l < 0) { - l = (Z_STRLEN_PP(str) - f) + l; - if (l < 0) { - l = 0; + f = Z_LVAL_PP(from); + + /* if "from" position is negative, count start position from the end + * of the string + */ + if (f < 0) { + f = Z_STRLEN_PP(str) + f; + if (f < 0) { + f = 0; + } + } else if (f > Z_STRLEN_PP(str)) { + f = Z_STRLEN_PP(str); + } + /* if "length" position is negative, set it to the length + * needed to stop that many chars from the end of the string + */ + if (l < 0) { + l = (Z_STRLEN_PP(str) - f) + l; + if (l < 0) { + l = 0; + } + } + + if ((f + l) > Z_STRLEN_PP(str)) { + l = Z_STRLEN_PP(str) - f; + } + if (Z_TYPE_PP(repl) == IS_ARRAY) { + zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(repl), &pos_repl); + if (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_PP(repl), (void **) &tmp_repl, &pos_repl)) { + convert_to_string_ex(tmp_repl); + repl_len = Z_STRLEN_PP(tmp_repl); + } + result_len = Z_STRLEN_PP(str) - l + repl_len; + result = ecalloc(result_len + 1, sizeof(char *)); + + memcpy(result, Z_STRVAL_PP(str), f); + if (repl_len) { + memcpy(&result[f], Z_STRVAL_PP(tmp_repl), repl_len); + } + } else { + repl_len = Z_STRLEN_PP(repl); + result_len = Z_STRLEN_PP(str) - l + repl_len; + result = ecalloc(result_len + 1, sizeof(char *)); + + memcpy(result, Z_STRVAL_PP(str), f); + memcpy(&result[f], Z_STRVAL_PP(repl), repl_len); + } + memcpy(&result[f + repl_len], Z_STRVAL_PP(str) + f + l, Z_STRLEN_PP(str) - f - l); + RETURN_STRINGL(result, result_len, 0); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Functionality of 'from' and 'len' as arrays is not implemented."); + RETURN_STRINGL(Z_STRVAL_PP(str), Z_STRLEN_PP(str), 1); } - } + } else { /* str is array of strings */ + + array_init(return_value); - if ((f + l) > Z_STRLEN_PP(str)) { - l = Z_STRLEN_PP(str) - f; - } + if (Z_TYPE_PP(from) == IS_ARRAY) { + zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(from), &pos_from); + } + + if (argc > 3 && Z_TYPE_PP(len) == IS_ARRAY) { + zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(len), &pos_len); + } + + if (Z_TYPE_PP(repl) == IS_ARRAY) { + zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(repl), &pos_repl); + } + + + zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(str), &pos_str); + while (zend_hash_get_current_data_ex(Z_ARRVAL_PP(str), (void **) &tmp_str, &pos_str) == SUCCESS) { + convert_to_string_ex(tmp_str); + + if (Z_TYPE_PP(from) == IS_ARRAY) { + if (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_PP(from), (void **) &tmp_from, &pos_from)) { + convert_to_long_ex(tmp_from); + + f = Z_LVAL_PP(tmp_from); + if (f < 0) { + f = Z_STRLEN_PP(tmp_str) + f; + if (f < 0) { + f = 0; + } + } else if (f > Z_STRLEN_PP(tmp_str)) { + f = Z_STRLEN_PP(tmp_str); + } + zend_hash_move_forward_ex(Z_ARRVAL_PP(from), &pos_from); + } else { + f = 0; + } + } else { + f = Z_LVAL_PP(from); + if (f < 0) { + f = Z_STRLEN_PP(tmp_str) + f; + if (f < 0) { + f = 0; + } + } else if (f > Z_STRLEN_PP(tmp_str)) { + f = Z_STRLEN_PP(tmp_str); + } + } + + + if (argc > 3 && Z_TYPE_PP(len) == IS_ARRAY) { + if (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_PP(len), (void **) &tmp_len, &pos_len)) { + convert_to_long_ex(tmp_len); + + l = Z_LVAL_PP(tmp_len); + zend_hash_move_forward_ex(Z_ARRVAL_PP(len), &pos_len); + } else { + l = Z_STRLEN_PP(tmp_str); + } + } else if (argc > 3) { + l = Z_LVAL_PP(len); + } else { + l = Z_STRLEN_PP(tmp_str); + } + + if (l < 0) { + l = (Z_STRLEN_PP(tmp_str) - f) + l; + if (l < 0) { + l = 0; + } + } + + + if ((f + l) > Z_STRLEN_PP(tmp_str)) { + l = Z_STRLEN_PP(tmp_str) - f; + } + + result_len = Z_STRLEN_PP(tmp_str) - l; + + if (Z_TYPE_PP(repl) == IS_ARRAY) { + if (SUCCESS == zend_hash_get_current_data_ex(Z_ARRVAL_PP(repl), (void **) &tmp_repl, &pos_repl)) { + convert_to_string_ex(tmp_repl); + result_len += Z_STRLEN_PP(tmp_repl); + zend_hash_move_forward_ex(Z_ARRVAL_PP(repl), &pos_repl); + result = ecalloc(result_len + 1, sizeof(char *)); + + memcpy(result, Z_STRVAL_PP(tmp_str), f); + memcpy(&result[f], Z_STRVAL_PP(tmp_repl), Z_STRLEN_PP(tmp_repl)); + memcpy(&result[f + Z_STRLEN_PP(tmp_repl)], Z_STRVAL_PP(tmp_str) + f + l, Z_STRLEN_PP(tmp_str) - f - l); + } else { + result = ecalloc(result_len + 1, sizeof(char *)); + + memcpy(result, Z_STRVAL_PP(tmp_str), f); + memcpy(&result[f], Z_STRVAL_PP(tmp_str) + f + l, Z_STRLEN_PP(tmp_str) - f - l); + } + + } else { + result_len += Z_STRLEN_PP(repl); - result_len = Z_STRLEN_PP(str) - l + Z_STRLEN_PP(repl); - result = ecalloc(result_len + 1, sizeof(char *)); + result = ecalloc(result_len + 1, sizeof(char *)); - memcpy(result, Z_STRVAL_PP(str), f); - memcpy(&result[f], Z_STRVAL_PP(repl), Z_STRLEN_PP(repl)); - memcpy(&result[f + Z_STRLEN_PP(repl)], Z_STRVAL_PP(str) + f + l, Z_STRLEN_PP(str) - f - l); - RETURN_STRINGL(result, result_len, 0); + memcpy(result, Z_STRVAL_PP(tmp_str), f); + memcpy(&result[f], Z_STRVAL_PP(repl), Z_STRLEN_PP(repl)); + memcpy(&result[f + Z_STRLEN_PP(repl)], Z_STRVAL_PP(tmp_str) + f + l, Z_STRLEN_PP(tmp_str) - f - l); + } + + + add_next_index_stringl(return_value, result, result_len, 0); + + zend_hash_move_forward_ex(Z_ARRVAL_PP(str), &pos_str); + } /*while*/ + } /* if */ } /* }}} */ + + + /* {{{ proto string quotemeta(string str) Quotes meta characters */ PHP_FUNCTION(quotemeta) diff --git a/ext/standard/tests/strings/substr_replace.phpt b/ext/standard/tests/strings/substr_replace.phpt new file mode 100644 index 0000000000..ada02eb83f --- /dev/null +++ b/ext/standard/tests/strings/substr_replace.phpt @@ -0,0 +1,812 @@ +--TEST-- +substr_replace() function +--POST-- +--GET-- +--FILE-- +<?php +$str = "try this"; +$repl = "bala "; +$start = 2; +echo "\n"; + + +echo "substr_replace('$str', '$repl', $start)\n"; +var_dump(substr_replace($str, $repl, $start)); +echo "\n"; + +$len = 3; +echo "substr_replace('$str', '$repl', $start, $len)\n"; +var_dump(substr_replace($str, $repl, $start, $len)); +echo "\n"; + +$len = 0; +echo "substr_replace('$str', '$repl', $start, $len)\n"; +var_dump(substr_replace($str, $repl, $start, $len)); +echo "\n"; + +$len = -2; +echo "substr_replace('$str', '$repl', $start, $len)\n"; +var_dump(substr_replace($str, $repl, $start, $len)); +echo "\n"; +echo "\n"; +echo "\n"; + + +$str = "try this"; +$repl = array("bala "); +$start = 4; +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).", ".var_export($start,1)."")."\n"; +var_dump(substr_replace($str, $repl, $start))."\n"; +echo "\n"; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).", ".var_export($start,1)."")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +echo "\n"; +echo "\n"; +echo "\n"; + + + +$str = array("ala portokala"); +$repl = array("bala "); +$start = array(4); +$len = array(3); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).", ".var_export($start,1)."")."\n"; +var_dump(substr_replace($str, $repl, $start))."\n"; +echo "\n"; + +$len = array(3); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).", ".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +$len = array(0); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).", ".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +$len = array(-2); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).", ".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; +echo "\n"; + + + + +$str = array("ala portokala"); +$repl = "bala "; +$start = 4; +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start))."\n"; +echo "\n"; +echo "\n"; + + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = 4; +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = 4; +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = 4; +$len = 0; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = 4; +$len = 0; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = 4; +$len = -2; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = 4; +$len = -2; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; + + + + +$str = array("ala portokala"); +$repl = "bala "; +$start = array(4); +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start))."\n"; +echo "\n"; +echo "\n"; + + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4); +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4); +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4); +$len = 0; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4); +$len = 0; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4); +$len = -2; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4); +$len = -2; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala"); +$repl = "bala "; +$start = array(4,2); +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start))."\n"; +echo "\n"; +echo "\n"; + + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = 3; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = 0; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = 0; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = -2; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = -2; +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + + +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala"); +$repl = "bala "; +$start = array(4,2); +$len = array(3); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start))."\n"; +echo "\n"; +echo "\n"; + + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = array(3); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = array(3); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = array(0); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = array(0); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = array(-2); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = array(-2); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala"); +$repl = "bala "; +$start = array(4,2); +$len = array(3,2); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start))."\n"; +echo "\n"; +echo "\n"; + + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = array(3,2); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = array(3,2); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = array(0,0); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = array(0,0); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + +$str = array("ala portokala", "try this"); +$repl = array("bala "); +$start = array(4,2); +$len = array(-2,-3); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; +echo "\n"; + + +$str = array("ala portokala", "try this"); +$repl = "bala "; +$start = array(4,2); +$len = array(-2,-3); +echo str_replace("\n","","substr_replace(".var_export($str,1).", ".var_export($repl,1).",".var_export($start,1).", ".var_export($len,1).")")."\n"; +var_dump(substr_replace($str, $repl, $start, $len))."\n"; +echo "\n"; + + + + +?> +--EXPECT-- +substr_replace('try this', 'bala ', 2) +string(7) "trbala " + +substr_replace('try this', 'bala ', 2, 3) +string(10) "trbala his" + +substr_replace('try this', 'bala ', 2, 0) +string(13) "trbala y this" + +substr_replace('try this', 'bala ', 2, -2) +string(9) "trbala is" + + + +substr_replace('try this', array ( 0 => 'bala ',), 4 +string(9) "try bala " + +substr_replace('try this', array ( 0 => 'bala ',), 4 +string(10) "try bala s" + + + + +substr_replace(array ( 0 => 'ala portokala',), array ( 0 => 'bala ',), array ( 0 => 4,) +array(1) { + [0]=> + string(9) "ala bala " +} + +substr_replace(array ( 0 => 'ala portokala',), array ( 0 => 'bala ',), array ( 0 => 4,), array ( 0 => 3,)) +array(1) { + [0]=> + string(15) "ala bala tokala" +} + +substr_replace(array ( 0 => 'ala portokala',), array ( 0 => 'bala ',), array ( 0 => 4,), array ( 0 => 0,)) +array(1) { + [0]=> + string(18) "ala bala portokala" +} + +substr_replace(array ( 0 => 'ala portokala',), array ( 0 => 'bala ',), array ( 0 => 4,), array ( 0 => -2,)) +array(1) { + [0]=> + string(11) "ala bala la" +} + + + +substr_replace(array ( 0 => 'ala portokala',), 'bala ',4) +array(1) { + [0]=> + string(9) "ala bala " +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),4, 3) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(5) "try s" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',4, 3) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(10) "try bala s" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),4, 0) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(8) "try this" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',4, 0) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(13) "try bala this" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),4, -2) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(6) "try is" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',4, -2) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(11) "try bala is" +} + + + + + + +substr_replace(array ( 0 => 'ala portokala',), 'bala ',array ( 0 => 4,)) +array(1) { + [0]=> + string(9) "ala bala " +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4,), 3) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(5) " this" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4,), 3) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(10) "bala this" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4,), 0) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(8) "try this" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4,), 0) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(13) "bala try this" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4,), -2) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(2) "is" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4,), -2) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(7) "bala is" +} + + + + + + + +substr_replace(array ( 0 => 'ala portokala',), 'bala ',array ( 0 => 4, 1 => 2,)) +array(1) { + [0]=> + string(9) "ala bala " +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), 3) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(5) "trhis" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), 3) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(10) "trbala his" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), 0) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(8) "try this" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), 0) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(13) "trbala y this" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), -2) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(4) "tris" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), -2) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(9) "trbala is" +} + + + + + + + +substr_replace(array ( 0 => 'ala portokala',), 'bala ',array ( 0 => 4, 1 => 2,)) +array(1) { + [0]=> + string(9) "ala bala " +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), array ( 0 => 3,)) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(2) "tr" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), array ( 0 => 3,)) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(7) "trbala " +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), array ( 0 => 0,)) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(2) "tr" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), array ( 0 => 0,)) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(7) "trbala " +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), array ( 0 => -2,)) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(2) "tr" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), array ( 0 => -2,)) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(7) "trbala " +} + + + + + + + +substr_replace(array ( 0 => 'ala portokala',), 'bala ',array ( 0 => 4, 1 => 2,)) +array(1) { + [0]=> + string(9) "ala bala " +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), array ( 0 => 3, 1 => 2,)) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(6) "trthis" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), array ( 0 => 3, 1 => 2,)) +array(2) { + [0]=> + string(15) "ala bala tokala" + [1]=> + string(11) "trbala this" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), array ( 0 => 0, 1 => 0,)) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(8) "try this" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), array ( 0 => 0, 1 => 0,)) +array(2) { + [0]=> + string(18) "ala bala portokala" + [1]=> + string(13) "trbala y this" +} + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), array ( 0 => 'bala ',),array ( 0 => 4, 1 => 2,), array ( 0 => -2, 1 => -3,)) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(5) "trhis" +} + + +substr_replace(array ( 0 => 'ala portokala', 1 => 'try this',), 'bala ',array ( 0 => 4, 1 => 2,), array ( 0 => -2, 1 => -3,)) +array(2) { + [0]=> + string(11) "ala bala la" + [1]=> + string(10) "trbala his" +} + |