人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで指定するサイズ(幅px × 高さpx)枠に文字を表示させ、その枠内に納まらない場合は「...」表示するプログラムを作成したいと思います。1文字12pxとします。

文字数はmb_strlenで取得し、文字のカットはmb_substrを使うまではわかっているのですが、
肝心の上記計算式がわかりません。

参考になるサイトや考え方を教えて下さい。


●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:PHP PX まら カット サイズ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mattn
●35ポイント

文字の大きさとなるフォントにより結果が異なります。

実際にそのフォントで描いた場合にどの様に表示されるかについては、それ相応のAPIを使わないと分かりませんが

方法としては2つあります。


まず計算で出す方法。

表示させたい幅 / 表示させたい文字数

となるようにする。



次にGDを使う方法。

この値が正しく戻るか分かりませんが、こんなAPIがあります。

http://php.net/manual/en/function.imagettfbbox.php

これで描いたボックスの大きさが、指定の範囲内になるよう文字列を減らしながら調整する。

◎質問者からの返答

表示させたい文字数が決まっていなくて、指定枠に収まるよう文字列を自動リサイズさせたいのが、質問の意図です。

それを実現する為の、諸々の情報を期待していたのですが、質問の仕方が悪くて誤解を招きました。すみません。


2 ● daimonpei
●35ポイント

$hyouji_text = "";

$text = "てきすと、、、";

$leader = "…";

$w=$h=12;

$width=幅;

$height=高さ;

$cols = floor( $width / $w );//一行の最大文字数

$rows = floor( $height / $h );//最大行数

$maxlen = $cols * $rows;//最大文字数

$strlen = mb_strlen($text);//文章全体の文字数

if($strlen > $maxlen){

$hyouji_text = mb_substr($text,0,($maxlen-1).$leader);

}else{

$hyouji_text = $text;

}

こういうことでしょうか。。。

改行とか考えてませんが。

ご参考までに。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ