大島 (2011年1月14日 22:22) 企画開発部 / PHP
みなさん、こんにちは。
今回はPHPでの文字数チェックについてお話したいと思います。
PHPで文字数のチェックをする際には、strlen()とmb_strlen()の2種類があります。 strlen()は文字列のバイト数を返し、mb_strlen()は文字列の文字数を返します。
ただし、mb_strlen()を使用するときには注意が必要です。
たとえば、以下のコードを実行してみます。
echo mb_strlen('アイロベックス');
mb_strlen()は文字数を返すので「7」が返ってくるはずですが、 「13」が返ってくる結果となりました。
これは、PHP内部のエンコーディングと文字列のエンコーディングが 異なっている場合に発生する現象です。 そのため、エンコードを合わせれば解決することができます。
以下のように、mb_strlen()の第二引数でエンコードの指定を行ってください。
echo mb_strlen('アイロベックス', 'UTF-8');
上記のように記述することで、正しい結果の「7」が返ってくるようになります。 ※mb_strlen()の第二引数は、プログラムのエンコードに合わせて変更してください。
【PHP】mb_strlenを使用するときの注意
大島 (2011年1月14日 22:22)
企画開発部 / PHP
みなさん、こんにちは。
今回はPHPでの文字数チェックについてお話したいと思います。
PHPで文字数のチェックをする際には、strlen()とmb_strlen()の2種類があります。
strlen()は文字列のバイト数を返し、mb_strlen()は文字列の文字数を返します。
ただし、mb_strlen()を使用するときには注意が必要です。
たとえば、以下のコードを実行してみます。
echo mb_strlen('アイロベックス');mb_strlen()は文字数を返すので「7」が返ってくるはずですが、
「13」が返ってくる結果となりました。
これは、PHP内部のエンコーディングと文字列のエンコーディングが
異なっている場合に発生する現象です。
そのため、エンコードを合わせれば解決することができます。
以下のように、mb_strlen()の第二引数でエンコードの指定を行ってください。
echo mb_strlen('アイロベックス', 'UTF-8');上記のように記述することで、正しい結果の「7」が返ってくるようになります。
※mb_strlen()の第二引数は、プログラムのエンコードに合わせて変更してください。