LoginSignup
1
0

More than 3 years have passed since last update.

【PHP】文字列を固定長に揃える(マルチバイト文字)

Last updated at Posted at 2020-09-28

はじめに

マルチバイト文字列を指定の長さで揃えたい

sprintf

sprintf('%-10s', 'abc'); // "abc       "
sprintf('%-10s', 'あいうえお') // "あいうえお"

sprintfではマルチバイト文字のときに上手く対応できない

参考:PHP: sprintf - Manual

str_pad

str_pad('abc', 10, ' ',STR_PAD_RIGHT) // "abc       "
str_pad('あいう', 10, ' ',STR_PAD_RIGHT) // "あいう "

バイト数換算で計算されるので、マルチバイト文字の場合、指定が上手く対応できない

参考:PHP: str_pad - Manual

以下のような関数を作ってマルチバイト文字列の長さを揃える

/**
 * 指定の文字列の長さまで全角で埋める
 * @return string $input 埋めた後の文字列
 */
 public function mbStrPad($input, $pad_length) {
     while(mb_strlen($input) < $pad_length) {
         $input .= ' ';
     }
     return $input;
 }

mbStrPad('あいうえお', 10); // "あいうえお     "
mb_strlen(mbStrPad('あいうえお', 10)); // 10

上記のような関数を作ってあげてマルチバイト文字列の長さを揃えた

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0