PHP:测试换行的行长

标签 php width word-wrap

如何测试 block 是否超过图像大小并将该文本换行到下一行。不确定我是否使用 if 语句正确执行此操作。

$text="Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem http://somelongurl.com/then-we-make-it-super-long-with-some-more/ Lorem Ipsum Lorem Ipsum Lorem Ipsum";

$string_chunks = explode(' ', $text);

foreach ($string_chunks as $chunk) {

    if($end_x + $chunk > $image_width){
        $start_x = 5;
        $start_y += 20;
    }

   $coords = imagettfbbox($fontsize, $angle, $font, $chunk);

   $end_x = $coords[0] + $coords[4] + 10;

   $color_to_draw = is_a_url($chunk) ? $linkcolor : $black; 

   imagettftext($im, $fontsize, $angle, $start_x, $start_y, $color_to_draw, $font, $chunk);

   $start_x += $end_x;
}

通过这段代码我得到:

Lorem Ipsum Lorem Ipsum Lorem Ipsum Lorem 
http://somelongurl.com/then-we-make-it-super-long-with-some-more/
Lorem Ipsum Lorem Ipsum Lorem Ipsum

我希望发生的事情是这样的:

Lorem Ipsum Lorem Ipsum Lorem Ipsum 
Lorem http://somelongurl.com/then-we
-make-it-super-long-with-some-more/
Lorem Ipsum Lorem Ipsum Lorem Ipsum

最佳答案

使用 wordwrap 并将第四个参数 $cut 传递给它作为 true 以强制断开 URL。

Live example .

关于PHP:测试换行的行长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3609922/

相关文章:

php - PHP 中的 SVG Word 换行功能?

c# - LINQ 查询执行投影,跳过或包装源在 IEnumerable.GetNext() 上抛出的异常

php - 当使用 Join 并且 2 个表具有相同名称的字段时,如何在 MYSQL 查询中查明正确的结果?

jquery - 通过浏览器调整大小来调整 div 宽度

javascript - 查找元素的宽度,而不是最大宽度

java - ItextPdf 宽度不会针对横向页面扩展

html - ng-grid 标题单元格中的文字换行

php - 如何复制 ArrayIterator 以保留其当前迭代位置?

php - 如何在 PHP 中比较日期

php - 使用 Guzzle 将照片上传到 telegram API