Authentication




Cancel OK
B!コメントする  2013-10-09 11:46:00 by old

PHPで文字を指定文字数で切る

指定文字数だけ取得したいこと良くありますよね?
地球上のブラウザーがHTML5に対応してればmaxlength属性とかJavaScriptつければいいだけなんですけどそうもいかない。
そして文字数の取得にはいくつかの方法があるので自分用にまとめてみました。

PHPで指定文字数を取得するものはいくつかありますが思いついたのを挙げると

substr
mbsubstr
mb
strimwidth


こんなもんでしょうか。
やり方をかえれば他にもありますがサクッと出来るのはこんな感じ。
それぞれの内容は

substr
引数に指定した文字列の長さを取得(バイト数での取得)
半角1文字で1バイト、全角1文字で2バイト

mbsubstr
引数に指定した文字列の長さを取得(文字数での取得)
半角も全角1文字
※引数で文字コードが指定出来る

mb
strimwidth
引数に指定した文字列の長さを取得(文字数での取得)
半角1文字で1バイト、全角1文字で2バイト
※引数で文字コードが指定出来る


それぞれの結果は

$str = '今日は12日ですよ';
echo substr($str, 0, 8);
// 今日��
echo mbsubstr($str, 0, 8, 'UTF-8');
// 今日は12日です
echo mb
strimwidth($str, 0, 8, '', 'UTF-8');
// 今日は12


となり文字コードを指定出来ないsubstrではマルチバイト文字混在の場合は文字化けも発生。
ちなみにmbsubstrとmbstrimwidthで文字コードを指定していない場合は全て「今日��」と表示された。

文字数で切るかバイト数で切るかの違いとも言えるが、用途によって使い分ける必要があり似た様なことが出来るからと選んでいると結果が異なることもあるので用途と求める結果を精査したうえで使いたいと思う。


PHP  

  • コメント
  • コメントはまだありません