static function substr_replace($string, $replacement, $start, $length = null)
{
if (extension_loaded('mbstring') === true) {
$string_length = self::strlen($string);
if ($start < 0) {
$start = max(0, $string_length + $start);
} else {
if ($start > $string_length) {
$start = $string_length;
}
}
if ($length < 0) {
$length = max(0, $string_length - $start + $length);
} else {
if (is_null($length) === true || $length > $string_length) {
$length = $string_length;
}
}
if ($start + $length > $string_length) {
$length = $string_length - $start;
}
return self::substr($string, 0, $start) . $replacement . self::substr($string, $start + $length, $string_length - $start - $length);
}
return is_null($length) === true ? substr_replace($string, $replacement, $start) : substr_replace($string, $replacement, $start, $length);
}