データベースからいくつかのフィールド値を取得して、それらをhtmlに表示したいと思います。
しかし、それらのいくつかはdiv幅よりも長いので、私はそれらの場合は切り刻み、30文字と言うよりも長い場合はそれらの後に3つのドットを追加したいと思いました。
windows vs mac os x-> windows vs m...
threads about windows vista -> threads about win...
どうやってやるの?
データベースからいくつかのフィールド値を取得して、それらをhtmlに表示したいと思います。
しかし、それらのいくつかはdiv幅よりも長いので、私はそれらの場合は切り刻み、30文字と言うよりも長い場合はそれらの後に3つのドットを追加したいと思いました。
windows vs mac os x-> windows vs m...
threads about windows vista -> threads about win...
どうやってやるの?
この種の機能を複数回実行する必要がある場合は、次の機能を検討してください。
function truncate($string, $limit, $break = '.', $pad = '...')
{
// return with no change if string is shorter than $limit
if(strlen($string) <= $limit) return $string;
// is $break present between $limit and the end of the string?
if(false !== ($breakpoint = strpos($string, $break, $limit)))
{
if($breakpoint < strlen($string) - 1)
{
$string = substr($string, 0, $breakpoint) . $pad;
}
}
return $string;
}
使用法:
echo truncate($string, 30);
あなたの例から判断すると、あなたは言葉を保存することを気にしていないようです、それでここにそれがあります:
if (strlen($str) > 30)
{
echo substr($str, 0, 30) . '...';
}
Smartyを使用する場合は、切り捨て修飾子を使用できます。
{myLongText|truncate:30:'...':true}
ところで、そのような種類の関数は、まともなテンプレートエンジンに存在する必要があります。
あなたが探しているものであるはずのwordwrap()をチェックしてください。