每5个句子后加上“<br/> <br/>”?

时间:2012-08-28 23:41:43

标签: php

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

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

我该怎么做?

3 个答案:

答案 0 :(得分: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++;
}

如果句子很简单,可能适合你。

答案 1 :(得分:1)

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

<?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;

答案 2 :(得分:1)

这个难题有两个部分:

  1. 将输入文本分解为句子
  2. 每5句话插入所需的文字
  3. 我不打算解决#1问题,因为通常会发现“在每五个点之后”并没有在实践中切割它,所以每个人都会达到他们的正则表达式,在你知道它之前就会出现一些难以理解的正则表达式你应该做出明智的选择。我只想说,分割句点可以像explode(".", $string)一样简单,并留在那里。

    幸运的是,第二个问题更容易了。假设$sentences是一个字符串数组,其中每个字符串是一个句子(包括结束句点),你可以这样做:

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

    我承认我已经成功地提供了这段代码,因为并不是每天都可以使用array_chunk