PHPのsubstr()で黒いひし形と白いハテナが表示される際の改善策

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

本日は覚え書きです。PHPの「substr」で黒いひし形と白いハテナマークが表示される場合の解決方法。

データベースから日本語文字を取得し「substr()」で文字列の長さを制限すると「文字列から文字が切り取られ黒いひし形と白いハテナマーク(�)が置換文字として残る」という現象ですね。

解決方法は以下にまとめましたのでぜひご参考くださいませ。

PHPのsubstr()で黒いひし形と白いハテナが表示される際の改善策

以下が実際に対策済みの分です。タイトルは全文表示にしています。文字化け感がなくなりましたね。

国内最大級の広告サービスでエンジニア職

⇒ 今すぐ募集内容をチェック - 株式会社ファンコミュニケーションズ【AD】 -

もっともシンプルな解決方法は「substr()」の代わりに「mb_substr()」を使う方法。

前提として日本語は1バイト文字ではありません。しかし「substr()」は1バイト換算で動作するために発生する現象です。1バイト文字でない「マルチバイト文字列」に対応した「mb_substr()」を使えば解決です。

元々の書き方が以下です。マルチバイト文字列には対応していない記述となります。

echo substr()

ちなみに以下が変更前の状態です。

次が「マルチバイト文字列」に対応させた記述方法。

echo mb_substr()

変更した後の状態が以下です。

まとめ

本日は「substr()」での文字化けについて解説させていただきました。

mb_というのがマルチバイトという頭文字です。英語など一般的な1バイト文字では使いませんが、日本語などの環境では1バイトで換算すると文字カウントが正しく動かないことがあります。

- 超快速なワードプレスを運営しませんか?【AD】-

英語環境では必要ありませんが、マルチバイト文字列に含まれる言語(日本語等)を保存しているデータベースから情報を取得して表示させる場合は「mb_substr()」が使いやすいです。黒いひし形と白いはてなマークが表示されてお困りという方はぜひご自身の状況に併せてもっとも最適な解決策をお試しくださいませ。

【今すぐ無料プラグインを手に入れる】
無料ダウンロードはこちら

ワードプレス専門家に丸投げする

WPホームページ研究所はワードプレスを中心としたブログ作成・ホームページ制作・オウンドメディア構築・プラグイン設定・調整など幅広いカスタマイズに対応しております。 記事の掲載情報はもちろんお好みの機能をいただければ専属スタッフが心を込めて対応させていただきます。まずはお気軽にお問い合わせくださいませ。

お問い合わせの種類をお選びください(もっとも近い項目)

法人の場合は法人名とご担当者のお名前をご入力ください

返信時のご連絡に利用するメールアドレスをご入力ください

運営中のウェブサイトURLがあればご入力ください

お困りの内容があれば詳しい内容をお聞かせください