substr の問題
記事タイトルを出力する際、フレーム幅の制限により、中国語タイトルは 10 文字までしか表示できません
10 を超える場合は、漢字 9 文字 + ..で表現されます。 、「一、二、三、四、五、六、七、八、九...」など
私の関数本体は非常に単純です、
function doTitleLen($title, $len){
if(strlen($title) > $ len){
$title = substr($title, 0, $len-2).'..';
}
return $title;
}
len が 10 であるとします
すると、送信される記事のタイトルは
「One Two Three Four Five Six Seven Eight Nine Ten One」
になりますsubstr に -2 があるため、最後の単語が文字化けします。これは、漢字 1 文字の長さに応じて減算されます
このバグの解決方法がわかりません
strlen はバイト数を取得します。単語数を計算するには?
単語数を取得した後、文字数に応じて文字数を計算できる関数はありますか?
------解決策------------------- -
mb_strlen() を使用して文字長を計算します。
mb_substr() を使用してインターセプトします。
指定されたエンコーディングに注意してください。