忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

PHP substrで文字化け→半角全角混在が原因!
substrでバイト単位での文字列の切り取り。
ときどき文字化けが起こるけれど、末尾だけなので文字コードの問題ではなさそう。
いろいろ試した結果、半角と全角が混在している文章のときに発生するようで、バイト指定で切り取られたことで末尾の文字が中途半端に出力されていたようです。

【方法1】
mb_substr を使う。

こっちはマルチバイト対応なので、半角全角が混在していても問題なく取れますが、バイト指定ではなく文字数指定なので今回はNG。

【方法2】
mb_strimwidth を使う。

指定した幅で文字列を丸める。幅=バイト数のようです。文字コードも指定できるので、今回はこれで解決できました!
第4引数の「丸めた後にその文字列の最後に追加される文字列」を指定すると、これも含めたバイト数として計算されるようなので注意。

mb_strimwidth
http://www.php.net/manual/ja/function.mb-strimwidth.php
- 17 - 16 - 15 - 14 - 13 - 12 - 11 - 10 - 9 - 6 - 4
prev  top next
BACKGROUND / tudu*uzu
TEMPLATE / Lenny
忍者ブログ [PR]