如何在第一个<p>之后插入<hr />,或者在某些文本的每5,000个字符之后插入</p>。</p>

时间:2014-11-24 04:33:25

标签: javascript php jquery insert word-count

我有一些很长的段落。我想打破它们以便于阅读。我想通过为每5,000个字符添加<hr>标记来划分它们。但我也不想在段落中间划分文本。所以我想在每5,000个字符的第一个<hr>之后添加<p> or <br>标记。 “text”已经包含HTML格式,因此我们可以直接在文本中找到<p> or <br>

我可以在后端使用PHP或在前端使用JS / jQuery,无论哪种方式更好。

我是新手而且我完全卡住了。我不知道如何实现这一目标。希望你能帮忙。非常感谢你!

4 个答案:

答案 0 :(得分:3)

这是jQuery中的解决方案。 jsFiddle可用。

在示例中,我分为100个字符,因此我们可以看到效果。代码如下:

$(function () {
    var counter = 0;
    $("p").each(function (i, element) {
        counter += $(element).text().length;
        if (counter > 100) {
            counter = 0;
            $(element).append("<hr/>");
        }
    });
});

算法的高级别是为每个段落保留一个文本大小的计数器,当它超过阈值时,添加一条水平线并重置计数器。

答案 1 :(得分:1)

这是PHP的解决方案

$text = "<p>bla...bla</p><p>bla...bla</p><p>bla...bla</p><p>bla...bla</p>"; 
$textArray = explode("</p>",$text);
foreach ($textArray as &$value) {
 echo $value."</p>";
 $countText = strlen(strip_tags($value))+$countText;
  if ($countText > 4999 )
   { echo "<hr/>"; $countText = ""; }
}

答案 2 :(得分:0)

您可能希望将其分解为句子,然后可能在每个段落中选择一个可能包含5个句子的数字,然后在每5个句子后插入一个<hr>

要将文字分解为句子,您可以查看php sentence boundaries detection

答案 3 :(得分:0)

  $(function () {
   var total_length = 0;
   $("p").each(function (i, element) 
   {
       total_length += $(element).text().length;
       if (total_length >= 5000) {
           total_length = 0;
           $(element).append("<hr/>");
        }
   });
 });

希望它对您有用