public function getData($str, $n, $index=null){if (substr_count($str, '。') < $n) {$n = substr_count($str, '。') + 1;}$part = [];$length = mb_strlen($str);$offset = 0;for ($i = 1; $i 0) {$thisPart = mb_substr($str, (($i - 1) * $start) - $offset, $end, 'utf-8');} else {$thisPart = mb_substr($str, ($i - 1) * $start, $end, 'utf-8');}if (false !== mb_strpos($thisPart, '。') && $i != $n) {$lastLocation = mb_strrpos($thisPart, '。');$offset += mb_strlen($thisPart) - $lastLocation - 1;$thisPart = mb_substr($thisPart, 0, $lastLocation + 1);}$part[$i] = $thisPart;}if ($index){return $part[$index]??'';}return $part;}echo $str;dump(getData($str, 3));dump(getData($str, 3, 3));exit;