我正在开发一个新闻文章网页,我想将新闻故事的长文本分成四个部分,并将它们保存到四个单独的列中的 MSQL DB 中。
这只是为了在向读者呈现时实现灵活性,我可以将一些重要信息放在内容中间的某个段落之后(两到三段之后较少)。重要信息,例如相关新闻、广告等。这是许多新闻网站的常见做法。
到目前为止,我已经尝试了下面的代码,这给我带来了另一个问题:
function split_words_into_parts( string $words, int $parts = 5 ) {
$words_array = explode( ' ', $words );
$words_cnt = count( $words_array );
$per_part = max( round( $words_cnt / $parts ), 1 );
$result = [];
/*--- Splitting the full array ---*/
for( $i = 0; $i < $parts; $i++ ) {
$result[] = array_slice( $words_array, $i * $per_part, $per_part );
}
$part1 = implode(" ", $result[0]);
$part2 = implode(" ", $result[1]);
$part3 = implode(" ", $result[2]);
$part4 = implode(" ", $result[3]);
$part5 = implode(" ", $result[4]);
if($words_cnt <= 1000) {
return [$part1.' '.$part2.' '.$part3, $part4.' '.$part5, '', ''];
}
if($words_cnt > 1000 AND $words_cnt < 2500) {
return [$part1.' '.$part2, $part3.' '.$part4, $part5, ''];
}
if($words_cnt >= 2500) {
return [$part1.' '.$part2, $part3, $part4, $part5];
}
}
在代码中,文本被分成 5 个,但它返回四个数组元素,其中第一个元素包含分隔文本的两部分,因为我希望第一部分比其余部分多。
上述代码的问题在于它根据文本数量进行分隔,这意味着传达故事中特定信息的完整段落可能会分散到不同的部分,并且广告将放置在它们之间,从而使该段落变得混乱和困难去理解事实上不方便的读者。
请我想要的是根据段落拆分文本,但仍然保留文本区域中的原始文本,因为我正在使用 php pasedown 库
感谢您的期待
您可以新建一个列来存储完整内容