Tutorial
この記事の読了時間:約2分32秒
当ブログ史上最大文字数のタイトルですが、要は mb_strimwidth 関数の第4引数に「文字列をまるめた後に付加する文字列」を指定する際、文字コードやら何やら気を付けないと、文字化けしたり指定文字数以下でまるまっちゃったり、つまりはバグるよ!
ってコトで、忘れる前に自分用メモです。
出力する文字列が絶対に全角だけってならいざ知らず、「文字列をまるめたい」ってコトは予期せぬ文字列が前提なワケで。
んで、このmb_strimwidth 関数は「半角=1、全角=2」って数え方をするので、場合によってはカウントが奇数のケースもありあり。
その場合に、文字コードをちゃんと指定していないと末尾の文字が化けるのです!
更に、まるめた文字列の末尾に「...」とか「、、、とでも言うのだろうか」とかを付加すべく、関数の第4引数を指定する際には、その前の第3引数で「付加する文字列のカウント分を足した数」を指定しとかないと、期待にそぐわぬ結果になっちゃいます。
と、そんな御託はどーでもいい!
ぐだぐだ言ってないでコード書くよ、ハゲ!
$str = '最近の強風で実家のトタン屋根が吹き飛んだ、マジで。'; /* 文頭から半角20文字分にまるめて出力 */ echo mb_strimwidth($str, 0, 20); // [結果] 最近の強風で� // ('A`;)「文字コードしてないから、、、かな?」 /* 半角20文字分にまるめて、文字コード指定して出力 */ echo mb_strimwidth($str, 0, 20, '', 'utf-8'); // [結果] 最近の強風で実家のトタ // ( #・∀・)「ヨッシャァァァアアア!!」 /* 半角20文字分にまるめて、末尾に ちくわ大明神 を付加して出力 */ echo mb_strimwidth($str, 0, 20, 'ちくわ大明神', 'utf-8'); // [結果] 最近の強ちくわ大明神 // (((;'A`)))「”最近の強風で実家のトタちくわ大明神”にしたいのに!」 /* 半角20文字 + ちくわ大明神(計・半角32文字分)を出力 */ echo mb_strimwidth($str, 0, 32, 'ちくわ大明神', 'utf-8'); // [結果] 最近の強風で実家のトタちくわ大明神 // ( #・∀・)「ヨッッシャァァァァアアアアアアア!!!!!」
つまるところ、必ず文字コードは指定するようにしつつ、末尾に文字列を足したいなら第2引数には「丸める文字カウント数 + 付加する文の文字カウント数」を記述すべし!
たまたま被害のない場所に落ちたから良かったものの、もし隣の家を傷付けたり光ファイバーぶった切ったりしてたらと思うと。。。
関連する記事
同じカテゴリーの記事
コメントを投稿する