2016-04-19 14 views
1

Webフォームから入力した文字列の長さを決定したい顧客がいます。文字列の大文字と小文字が混在することがあります。PHP - 文字列の幅を決定する方法

仮定、すなわち、フォントサイズは、高さ1" であることである。約72点。

72点、印刷小文字 『s』は大文字 『S』よりも狭くなっている。

私はインチで結果を表示する必要があります。

は、文字列の幅を計算するためのPHP内の方法はありますか??

+2

いいえ、PHPはありません。これはレンダリングされた値であり、サーバー値ではありません。 PHPはサーバー側の言語です。サイズを知るにはjavascriptを使用する必要がありますが、デバイス間で異なるレンダリングが行われるため、あいまいになります。 –

+2

これは、基本的に*右*を取得することは不可能です。文字列がレンダリングされるフォントに依存するだけでなく、フォントをレンダリングする*フォントレンダラー*にも依存します。結果は、プラットフォームによって多少異なります*。あなたが得ることができる最高のものは、大まかな球場*です。 – deceze

+0

これは多くの要因によって異なります。ユーザーがズームを使用している場合はどうなりますか?私はあなたがこれを行うことができると想像できる唯一の方法は、デフォルトのフォントの種類とサイズを設定しています。そして、キャンバスを使って各文字のサイズを測定します。 – manuerumx

答えて

0

テキストを取得する必要があり、かつ画像に変換し、使用します正しいサイズのフォントなど。これは、あまりにも多くの作業を必要とするものではありませんありがたいことにPHPでrkingしてください。この場合、私はフォントなどの詳細を仮定しますが、独自のデータを使用してください。

<?php 
    $text = "my string of text"; 

    $img = $imagecreatetruecolor(100,100); // SIZE DOESN'T MATTER REALLY THIS TIME 
    $fontSize = 72; //FONT SIZE 
    $fontFile = "arial.ttf" // PUT THE RELEVANT FONT FILE IN THE SAME DIRECTORY AS THIS SCRIPT 
    $boundingBox = imagettfbbox($fontSize, 0, $fontFile, $text); //RETRIEVE THE BOUNDING BOX OF THE TEXT RENDERED 
    $width = $boundingBox[2] - $boundingBox[0]; //WIDTH IN PIXELS AT 72dpi 
    $inchesWidth = $width/72; 
    echo $inchesWidth; 
    ?> 

システム間のスペースの違いによって100%正確になるわけではありませんが、あなたには良いゲストを与える必要があります。

+0

ありがとう、素晴らしい仕事! –

+0

よろしく!それを聞いてうれしい、あなたが私のために答えを受け入れることができればそれは大いに感謝されるだろう!プロジェクトの残りの部分と一緒に運の最高のボブ:) – RefreshCarts

関連する問題