这个函数是Bing提供的,但是不完美,比如说我设置的不超过500文字,但有的时候因为分段问题,会产生500多文字的情况,但分段是不断句的。如果有朋友可以优化一下的,非常感谢。
<?php
function splitText(string $text): array
{
$punctuation = '/[。!?;:”’)》】,、!?;:,"()\r\n]/u';
$segments = [];
$segment = '';
for ($i = 0; $i < mb_strlen($text); $i++) {
$char = mb_substr($text, $i, 1);
$segment .= $char;
if (preg_match($punctuation, $char) && mb_strlen($segment) >= 400) {
$segments[] = $segment;
$segment = '';
}
}
if ($segment !== '') {
$segments[] = $segment;
}
return $segments;
}
发表回复