web-dev-qa-db-ja.com

Webページにレンダリングされる文字列の長さ(ピクセル単位)を確認するにはどうすればよいですか?

フォントサイズ(12)とフォントファミリ(calibri)がわかっている場合、レンダリング後に特定の文字列が取る長さ(ピクセル単位)を決定する方法はありますか?フォントとサイズについては絶対に確信しています。 PHPコード自体で長さを決定するために、この目的のためのルックアップテーブルはありますか?私はPHPスクリプトを記述して、さまざまなDBから引き出されたデータで満たされたボックス。問題は、文字列が大きい場合、手動でテキストを折り返し、ボックスのサイズを大きくする必要があることです。

ありがとう

24

PHP function imagettfbbox を使用して、指定された文字列のバウンディングボックスのサイズを取得します。

一方、クライアント側で処理したい場合は、canも使用します SVG画像を操作するJavaScript 。そうすれば、クライアントが指定されたフォントを持っていてもいなくても問題ありません...

18
kkyy

PHP Gdを使用して、文字列を画像としてレンダリングし、結果の画像のサイズを取得できます。

これを使用すると、動作するはずです。

   list($left,, $right) = imageftbbox( 12, 0, "arial.ttf", "Hello World");

   $width = $right - $left;
17
jsnfwlr

あなたのタイトルと実際の投稿は少し異なることを言っているようです。私があなたが本当に求めているのは、ウェブページに表示されるテキストの幅をピクセル単位で決定できるかどうかだと思いますin your PHP code(prior toレンダリングされるWebページ)。

もしそうなら、答えは「いいえ」です。このフォントはユーザーのコンピューターで使用できない場合があります。カスタムスタイルシートが適用されている可能性があります。大きなフォントサイズを使用します。等...

あなたがcanすることは、JavaScriptを使用して幅を決定することですページがレンダリングされます(明らかに、他のページでも同じことができ、何も期待できません)それまでは変更されます)、それをPHPに送信します。いくつかの巧妙なAJAXを使用すると、同じページでこれを行うこともできます。

JavaScriptでこれを行う方法の詳細については、 この質問 を参照してください。

5
ChssPly76

JQueryを使用して、

$("text").each(function(){alert(this.innerHTML+" is "+$(this).width()+" pixels.");});
3
WebManWalking

PHPのビルドインフォントを使用してテキストの文字列長を決定する場合(たとえば、imagestring()を使用している場合)、以下を使用できます。

imagefontwidth()


$text = "Your text here"
$fontSize = 5;

$textLength = imagefontwidth($fontSize) * strlen($text);

Build-In-Fontsを使用しない場合は、上記のようにimagettfbbox()を使用してください。

2
TimoRieth