気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHPエラーの原因と対策
  2. 15 view

mb_substrで取得した文字列が文字化けするとき

PHP関数のmb_substrで取得した文字列が文字化けしている場合、文字コードが正しく設定されていないことが原因かもしれません。たとえば、次の例では、「プログラミング」という文字だけを取得しようとしています。

<?php
$temp = "PHPプログラミングの教科書";
echo mb_substr($temp, 3, 7);
?>

文字コードが正しく設定されていないと実行結果は文字化けします。

実行結果(文字化けしている)

mb_substrの実行結果が文字化けする

文字化けの回避方法

文字化けを解消するために文字コードを設定する方法はいくつかあります。php.iniで設定できれば理想的ですが、とりあえず現在のPHPスクリプトの文字化けを回避するには、次のようにmb_internal_encoding関数を使って指定する方法があります。

<?php
mb_internal_encoding("UTF-8");
$temp = "PHPプログラミングの教科書";
echo mb_substr($temp, 3, 7);
?>

これで、文字化けは直るはずです。

実行結果
プログラミング

文字コードの設定場所

上記のように個別のPHPスクリプトで文字コードを設定するのは実用的ではありません。次のような方法で設定しておきましょう。レンタルサーバーによって可能な作業が異なるので、いくつかのパターンを知っておいた方が良いです。

  • php.iniの「mbstring.internal_encoding」を編集する
  • .htaccessに設定を追加する
  • レンタルサーバーの「PHP設定」メニューを使う

必ずしもphp.iniを編集できるとは限らないので、以下、.htaccessに設定を追加する例を紹介します。

php_value mbstring.internal_encoding UTF-8

このコードを.htaccessに記述して、動作中のアプリケーションのルートフォルダに置けば、下の階層にあるPHPスクリプトにも反映されます。

PHPエラーの原因と対策の最近記事

  1. PHPの関数や変数の前にあるアットマークの意味は?

  2. 「http:// wrapper is disabled in the server co…

  3. php.iniの場所

  4. 「Warning: array_key_exists()」と表示されるとき

  5. 「Warning: A non-numeric value encountered」と表示…

関連記事

PAGE TOP