代码之家  ›  专栏  ›  技术社区  ›  KJ Saxena

如何确定在网页上呈现的字符串的长度(以像素为单位)?

  •  21
  • KJ Saxena  · 技术社区  · 15 年前

    如果我知道字体大小(12)和字体系列(calibri),有没有一种方法来确定给定字符串在呈现后的长度(以像素为单位)?我非常确定字体和大小。是否有任何查找表用于确定PHP代码本身的长度?我正在编写一个PHP脚本来动态生成一个SVG图像,其中包含各种各样的框,其中充满了从数据库中提取的数据。问题是,如果字符串很大,我需要手动环绕文本并增大框的大小。

    谢谢

    5 回复  |  直到 7 年前
        1
  •  16
  •   kkyy    15 年前

    使用php函数 imagettfbbox 获取给定字符串的边界框的大小。

    另一方面,你 可以 也使用 javascript to manipulate SVG images 如果您想在客户端处理它。这样即使客户机有没有指定的字体也没关系…

        2
  •  16
  •   jsnfwlr    7 年前

    你可以使用 PHP钆 将字符串呈现为图像并获取结果图像的大小。

    如果您使用这个,它应该可以工作:

       list($left,, $right) = imageftbbox( 12, 0, "arial.ttf", "Hello World");
    
       $width = $right - $left;
    
        3
  •  4
  •   Community CDub    7 年前

    你的头衔和实际职位似乎有点不同。我猜你真正想问的是,是否可以确定网页上呈现的文本的像素宽度 在您的PHP代码中 (在呈现网页之前)。

    如果是这样,答案是“不”。所述字体可能在用户的计算机上不可用;可能已应用自定义样式表;使用大字体大小等。

    你什么 可以 使用javascript确定宽度 之后 页面被呈现(很明显,您也可以在其他页面中这样做,并且希望在此之前不会有任何变化),并将其提交回PHP。使用一些巧妙的Ajax,您甚至可以在同一个页面上执行此操作。

    看一看 this question 有关如何在JavaScript中执行此操作的详细信息。

        4
  •  3
  •   Community CDub    11 年前

    使用jQuery,

    $("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");});
    
        5
  •  2
  •   TimoRieth    10 年前

    如果要确定文本的字符串长度,请使用PHP的内置字体(例如,如果使用的是ImageString()),可以使用:

    imagefontwidth()
    
    
    $text = "Your text here"
    $fontSize = 5;
    
    $textLength = imagefontwidth($fontSize) * strlen($text);
    

    如果不使用内置字体,请使用imagettfbbox(),如上所述。