- 2007年4月11日 14:53
- PHP
長い文字列を適当な長さに揃えて出力したいときに、2バイト文字と1バイト文字が入り混じっていると、中途半端に文字がカットされ、文字化けしてしまうのを防ぐ方法。
//文字コード設定
mb_language("Japanese");
mb_internal_encoding("EUC");
$str = 'あいうえおAbcdかきくEfghけこさしすせそ';
//最初から10文字を切り抜く
$str = mb_substr($str,"0","10");
mb_substr() だけだと文字コードをきちんと認識せず語尾が文字化けしてしまったので、mb_language() と mb_internal_encoding() を使ってきちんと設定すると綺麗に切り抜ける。
- Newer: document.getElementById ではまった
- Older: 日本でのInternetExplorer7の自動更新時期
Comments:3
- 通りすがり 2007年7月15日 10:25
上の方法でも綺麗に切り取れませんでした。
やはり、中途半端に切り取られ「1あいうえお・」と入ります。 最後には「・」が入りますね。- ZARU 2007年7月16日 16:15
コメントありがとうございます。
あれ、おかしいですね。僕の環境ではこれで奇麗に切り取れるんですが…。PHPファイルの文字コードと mb_internal_encoding は合っていますかね?
内部エンコードの設定を確認してみると良いかもしれません。- ぺ 2009年1月 9日 03:44
数字はint型なので
mb_substr($str,"0","10");
より
mb_substr($str,0,10);
のほうが正しいと思います。
Trackbacks:0
- TrackBack URL for this entry
- http://blog.tofu-kun.org/mt-tb.cgi/304
- Listed below are links to weblogs that reference
- 2バイト文字列を文字化けせずに切り抜く方法 - PHP編 from Webプログラマー+WebデザイナーなZARU日記
