添加“<;br><;br>";每5句话之后


Add "<br><br>" after every 5 sentences?

想象一篇很长的文章,没有换行符。它就像

sentence 1. sentence 2. sentence 3. sentence 4. sentence 5. sentence 6. sentence 7. 
sentence 8. sentence 9. sentence 10. sentence 11. sentence 12. sentence 13. sentence 14. 
sentence 15. sentence 16. sentence 17. sentence 18. sentence 19. sentence 20. sentence 
21. sentence 22. sentence 23. sentence 24. sentence 25.

我想在每5句话后加换行符。或者每5个之后

我该怎么做?

这是一种非常糟糕的方法,我认为这可以用regex完成,但无论如何。

<?php
$str = "a.b.c.d.e.f.g.h.i.j.";
$arr = explode(".", $str);
$new_str = "";
$j = 1;
foreach($arr as $arr_el) {
    $new_str .= $arr_el.".";
    if($j % 5 == 0) {
        $new_str .= "<br/><br/>";
    }
    $j++;
}
echo $new_str;
$str="long sentence. long sentence. ";
$lines=explode('. ', $str); // Break sentence with ". "
$i=1;
    foreach($lines as $l){
    echo $lines;
    if ($i%5==0){echo "<br /><br />";}
i++;
}

如果句子这么简单的话,可能对你有用。

这个谜题有两块:

  1. 将输入的文本分解成句子
  2. 每5句插入所需文本

我不打算讨论#1,因为事实证明,"每五个点之后"在实践中并不能真正切割它,所以每个人都会伸手去拿他们的正则表达式,在你意识到这一点之前,你应该从大量不可读的正则表达式中做出明智的选择。我只想说,周期分割可以像explode(".", $string)一样简单,就这样吧。

谢天谢地,第二个问题比较容易。假设$sentences是一个字符串数组,其中每个字符串是一个句子(包括结束周期),您可以这样做:

$chunks = array_chunk($sentences, 5);
foreach($chunks as &$chunk) {
    $chunk = implode(' ', $chunk);
}
$result = implode("<br><br>", $chunks);

我承认,我之所以给出这个代码,是因为并不是每天都能使用array_chunk