php函数substr_replace中文乱码的解决办法

此文章发布于2个月前,部分信息可能已经过时,请自行斟酌确认

php对字符串操作过程中如果遇到中文我们一般都会使用mbstring扩展中的函数去解决中文乱码问题。
例如mb_strlenmb_substr,但官方没有mb_substr_replace函数,虽然没有但是php手册中又phper给出了示例


代码链接
手册链接

代码如下:


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

?>

最后修改:2021 年 04 月 13 日 09 : 46 AM
如果觉得我的文章对你有用,请随意赞赏

发表评论