PHPを独学するなら、Udemyの動画講座で
PHP 7も使えて快適な エックスサーバー

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スクリプトにも反映されます。

スポンサーリンク

こちらもどうぞ

こちらも参考にしてください

関連記事

MySQL

phpMyAdmin

PHPサンプルコード

PHP関数

WordPress

エラーメッセージ

PHPの基礎が身に付いたかチェック!

PHP「直す力」養成ドリル
スポンサーリンク