CakeFest 2025 Madrid: The Official CakePHP Conference

Voting

: min(three, five)?
(Example: nine)

The Note You're Voting On

billg AT microsoft.com
16 years ago
Forget all of the mb_substr_replace() implementations mentioned in this page, they're all buggy.

Here is a version that mimics the behavior of substr_replace() exactly:

<?php

if (function_exists('mb_substr_replace') === false)
{
function
mb_substr_replace($string, $replacement, $start, $length = null, $encoding = null)
{
if (
extension_loaded('mbstring') === true)
{
$string_length = (is_null($encoding) === true) ? mb_strlen($string) : mb_strlen($string, $encoding);

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;
}

if (
is_null($encoding) === true)
{
return
mb_substr($string, 0, $start) . $replacement . mb_substr($string, $start + $length, $string_length - $start - $length);
}

return
mb_substr($string, 0, $start, $encoding) . $replacement . mb_substr($string, $start + $length, $string_length - $start - $length, $encoding);
}

return (
is_null($length) === true) ? substr_replace($string, $replacement, $start) : substr_replace($string, $replacement, $start, $length);
}
}

?>

<< Back to user notes page

To Top