-1

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

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 个“。”之后

我怎样才能做到这一点 ?

4

3 回答 3

2

这是一个非常糟糕的方式,我认为这可以用正则表达式来完成,但无论如何。

<?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;
于 2012-08-28T23:47:29.193 回答
2
$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++;
}

如果句子那么简单,可能对你有用。

于 2012-08-28T23:47:43.203 回答
1

这个难题有两个部分:

  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

于 2012-08-28T23:47:42.050 回答