長さに制限のない複数のテキストエントリを表示するWebページがあります。彼らは新しい行に行かないように長すぎる場合、自動的にカットされます。これは、それらをカットするPHP関数です:文章を短くするアルゴリズムの問題
function cutSentence($sentence, $maxlen = 16) {
$result = trim(substr($sentence, 0, $maxlen));
$resultarr = array(
'result' => $result,
'islong' => (strlen($sentence) > $maxlen) ? true : false
);
return $resultarr;
}
あなたは下の画像で見ることができるように、結果は罰金ですが、いくつかの例外があります。複数のMを含む文字列(それらを考慮する必要があります)は改行に移動します。
現在、すべての文字列はわずか16文字で切り詰められていますが、これは既に非常に低く、読みにくくなっています。
もっとスペースを必要とする文章を取得する方法と、ワイド文字を含む文章をより少ない文字数で終わるようにする方法があるかどうかを知りたいのですが(CSSプロパティテキスト-overflow:一般的にサポートされていないため、省略記号がついているので、「...」をクリックして完全なエントリにリンクすることはできません。
ありがとうございます。
あなたがやっていることはベストプラクティスではありません... PHPはUIとそれがどのようにスタイル化されているかについて何も知らないので、最高のテキスト幅を計算できません... CSS/Javascriptを使用してください。あなたの質問とは無関係の別の話です。 –
また、UTF-8コードを扱っているように見えますが、コードポイントの中間で文字列を切り取らないようにするために何もしていないことに注意してください。実際には、考えてみましょう:文字を組み合わせることで、そのような仕事は一般的な意味ではっきりと*自明ではありません。 –