<?php
$string = 'Old string Old more string Old some more string';
$search = 'Old';
echo str_ureplace($search, 'foo', $string);
function foo ($search, $number) {
return 'New' . $number;
}
/**
* str_ureplace
*
* str_replace like function with callback
*
* @param string|array search
* @param callback $callback
* @param string $subect
* @param int $replace_count
* @return string
*/
function str_ureplace($search, $callback, $subject, &$replace_count = null) {
$replace_count = 0;
foreach(((array) $search) as $needle) {
$len = strlen($needle);
while(($pos = strpos($subject, $needle, $pos)) !== false) {
$replace = call_user_func($callback, $needle, ++$replace_count);
$subject = substr_replace($subject, $replace, $pos, $len);
}
}
return $subject;
}