从新闻文章的文本区域输入将文本分成四部分

问题描述 投票:0回答:1

我正在开发一个新闻文章网页,我想将新闻故事的长文本分成四个部分,并将它们保存到四个单独的列中的 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 库

感谢您的期待

php split count codeigniter-4
1个回答
-1
投票

您可以新建一个列来存储完整内容

© www.soinside.com 2019 - 2024. All rights reserved.