我需要将一大块文本拆分成相同大小的段落,并使用完全相同数量的字符串行以保持它们的统一性,我目前正在使用以下代码使用 php 进行此操作。
function arrangeText(){
if (have_posts()) : while (have_posts()) : the_post();
$content = strtolower(get_the_content());
$content = trim(strip_tags($content));
$post_len = strlen($content);
$segmentCont = 1;
$auxOffset = 0;
$auxOffset2 = 0;
$limit = 896;
$limitTotal = 0;
while($limitTotal<$post_len){
if($segmentCont==2) {
$limit = 943;
}
$segmentCont++;
$limitTotal = $limitTotal + $limit;
if($limitTotal<$post_len)
{ $auxOffset = strpos($content," ",$limitTotal);}
else
{ $auxOffset = $post_len;}
$post_segment = trim(substr($content,$auxOffset2,$auxOffset-$auxOffset2));
$auxOffset2 = $auxOffset;
echo_segment($post_segment);
}
endwhile;
endif;
}
这确实有效,但即使我计算每个字符,一些字符可能最多占用三个字符空间,所以我的段落有不同的行数,或者最后一行被切成两半,如果我使用 monotypefont 一切顺利, 但我的客户想要一种特定的字体,我一直在尝试各种方法,但没有成功,所以我来找你们大佬们帮忙。我唯一能想到解决这个问题的是一个非常复杂的脚本,用于获取每个字符的宽度,每次回显并将该值添加到计数变量,并执行条件(我猜是在循环内)来检查总数字符的宽度超过了我段落的总宽度,如果在它找到的最后一个“”(空白)之前将它切片(防止代码将单词切成两半),但我不知道这是否可以用 php,js 、jquery 或任何可以在网站上帮助我的东西,我确信有一种简单的方法可以做我在这里尝试的事情,但也许我不够聪明,所以请帮助我 =)。
编辑 1:我的错,等宽字体也无法解决问题,它们在我的 p 标签(溢出:隐藏)下方被剪切和溢出,我虽然在我阅读文本之前它们一直在工作,所以我想即使它们是等宽的,它们的字符大小也不同。
最佳答案
您可以使用此代码来测量字符的宽度并创建一个“字典”。
您可以调整它以返回相对值(假设 w = 1
、i = 0.5
这样它会更灵活)。
fiddle 在这里:http://jsfiddle.net/Gw4AV/
var chars = ["a", "b", "c", "i", "w"];
var widths = [];
for (var i = 0; i < chars.length; i++)
{
var span = $("<span>").text(chars[i]);
$("body").append(span);
widths.push(span.width());
}
alert(widths);
关于php - 在不使用单字字体的情况下,固定每个 <p> 的字符行数,这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12927531/