<?php
$haystack = 'abdabc';
$needle = 'c';
$replace = 'z';
$limit = 2;
function str_replace_limit($haystack, $needle, $replace, $limit, $start_pos = 0) {
if ($limit < 1 || ($pos = strpos($haystack,$needle,$start_pos)) === false) {
return $haystack;
} else {
return str_replace_limit(
substr_replace($haystack, $replace, $pos, strlen($needle)),
$needle,
$replace,
$limit - 1,
$pos + strlen($replace)
);
}
}
echo str_replace_limit($haystack, $needle, $replace, $limit);
preferences:
61.33 ms | 402 KiB | 5 Q