php - 在不使用单字字体的情况下,固定每个 <p> 的字符行数,这可能吗?

标签 php javascript jquery wordpress css

我需要将一大块文本拆分成相同大小的段落,并使用完全相同数量的字符串行以保持它们的统一性,我目前正在使用以下代码使用 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 = 1i = 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/

相关文章:

php - 从数组中删除一组字段

javascript - 如何检测或避免客户端浏览器编辑过的 JavaScript?

javascript - 无法隐藏所有div内容

javascript - 根据背景颜色更改颜色

asp.net - 一页上有多个 ASP.Net 控件

jquery - 日期选择器、jquery

php - 我无法停止当前通过ajax调用在提供的网页上播放音频

php - 无法使用 mssql_connect 从 php 连接到 mssql 服务器

php - 插入具有多个值的重复键更新

javascript - 如何使用javascript访问JSON数据库