如何在文本的每 5,000 个字符之后的第一个 <p> 或 <br> 之后插入一个 <hr>
How can I insert a <hr> after the first <p> or <br> following every 5,000 characters of some text?
我有一些很长的段落。我想将它们分解以便于阅读。我想通过为每 5,000 个字符添加一个 <hr>
标签来划分它们。但我也不想在段落中间划分文本。因此,我想在每 5,000 个字符的第一个<p> or <br>
之后添加 <hr>
标签。"文本"已经具有HTML格式,因此我们可以直接在文本中找到<p> or <br>
。
我可以在后端使用 PHP 或在前端使用 JS/jQuery,以更好的方法为准。
我是一个新手,我完全被困住了。我不知道如何实现这一目标。希望你能帮到忙。谢谢!
这是jQuery中的一个解决方案。 可以使用 jsFiddle。
在示例中,我拆分了 100 个字符,以便我们可以看到效果。 代码如下:
$(function () {
var counter = 0;
$("p").each(function (i, element) {
counter += $(element).text().length;
if (counter > 100) {
counter = 0;
$(element).append("<hr/>");
}
});
});
该算法的高级是为每个段落保留文本大小计数器,当它超过阈值时,添加一条水平线并重置计数器。
这是 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 = ""; }
}
您可能
想将其分解成句子,然后可能在每个段落中选择一个数字,也许是5个句子,然后在每5个句子之后插入一个<hr>
。
要将文本分解成句子,您可以查看 php 句子边界检测
$(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/>");
}
});
});
希望它对你有用
相关文章:
- 如何在 d3.js 中的同级元素之后插入
- 在原始克隆之后插入克隆
- 如何在字符串中的第二个字符之后插入字符
- 我可以在 Javascript 中的 onclick 中的“this”之后插入字符串吗?
- 如何使用原型.js在文本块之后插入内容
- 通过jQuery在最后一项之后插入
- 如何使用jQuery在具有类的特定元素之后插入HTML
- 如何在第二个元素之后插入
- 如何在文本的每 5,000 个字符之后的第一个
或
之后插入一个 - jQuery 在最后一个元素之后插入
- Node.js:在文本文件中的特定行之后插入一行
- 在Meteor方法中承诺之后插入集合
- 在“”之后插入文本;这个“;使用javascript输入元素
- 在动态生成的表之后插入一个来自jQuery的跨度
- 找到一个元素,然后在下一个元素之后插入内容
- 在每个函数的特定结果之后插入元素
- 具有相同类的多个元素-仅在最后一个元素之后插入
- 在特定字符之后插入文本
- 在argv[2]NodeJ之后插入参数
- 在没有自动丢失标记的图元之前和之后插入内容