线上报 500 错误,定位到是 json 解析失败,特定内容存在乱码,而造成乱码的是原因是 rtrim 截取中文字符时末位可能乱码。我们可以自定义一个函数,通过mb_substr实现相同的功能:

/**
 * 自定义rtrim函数,完美支持中文
 * @param $content 要截取的内容
 * @param $tail 要截取掉的内容
 *
 * @return String
*/

function r_trim($content, $tail)
{
    $len = mb_strlen($tail, 'utf-8');
    return $tail == mb_substr($content, -$len, $len, 'utf-8') ? mb_substr($content, 0, -$len, 'utf-8') : $content;
}

注意,使用此函数要先确认服务器上的php开启了mb_substr函数。