【问题标题】:How can I insert a <hr> after the first <p> or <br> following every 5,000 characters of some text?如何在某些文本的每 5,000 个字符之后的第一个 <p> 或 <br> 之后插入一个 <hr>?
【发布时间】:2015-01-21 18:08:54
【问题描述】:

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

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

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

【问题讨论】:

  • “文本”是什么样的?它是否已经有 HTML 格式,还是只是原始文本?
  • 哦,我忘了提...是的,它有 HTML 格式 :)

标签: javascript php jquery insert word-count


【解决方案1】:

您可能想将其分解成句子,然后可能在每个段落中选择一个可能 5 个句子的数字,然后在每 5 个句子后插入一个&lt;hr&gt;

要将文本分解成句子,可以看php sentence boundaries detection

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 数单词会更好
    【解决方案3】:

    这是一个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 = ""; }
    }
    

    【讨论】:

      【解决方案4】:
        $(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/>");
              }
         });
       });
      

      希望对你有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 2021-09-11
        • 2022-12-19
        • 2017-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多