我有一些很长的段落。我想打破它们以便于阅读。我想通过为每5,000个字符添加<hr>
标记来划分它们。但我也不想在段落中间划分文本。所以我想在每5,000个字符的第一个<hr>
之后添加<p> or <br>
标记。 “text”已经包含HTML格式,因此我们可以直接在文本中找到<p> or <br>
。
我可以在后端使用PHP或在前端使用JS / jQuery,无论哪种方式更好。
我是新手而且我完全卡住了。我不知道如何实现这一目标。希望你能帮忙。非常感谢你!
答案 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/>");
}
});
});
希望它对您有用