インターセプトされた文字列、長さが異なります
<?PHP $prna=$row['description']; if(strlen($prna)>20) { $prna=mb_substr($prna,0,40,'utf-8')."...."; echo $prna; } else { echo $prna; } ?>
ディスカッションへの返信 (解決策)
なぜなら文字列の長さはピクセル幅と等しくありません
ローカルディスプレイが調整されていても、クライアントが使用するフォントは制御できません。つまり、ピクセル幅はまだ不確かです
ブラウザのデフォルトを変更すると、フォントが理解できます
計算に何か問題があります
フォントが非等幅フォントを使用している場合とすると、状況は次のようになります。 これははるかに複雑なので、ここでは説明しません
文字と記号の場合、1 バイトは 1 バイトです。
gbk エンコーディングの場合、1 つの漢字は 2 バイトであり、上記の状況とまったく一致します。
utf-8 エンコーディングの場合、1 つの中国語文字は 3 バイトです。つまり、占有率を計算するとき、中国語の文字数 * 2/3 が、文字によってインターセプトされます。中華でも洋食でも1つと数えます。ひょうたんプレースホルダー