【PHP】文字列上で中央揃え、縦揃え

 PHP はサーバーサイドでよく使われる言語であり、コンソールやログに文字列のみで様々なものを表現する時がしばしばあります。そういった時には後に解析のしやすい JSON 等の構造化された文字列を残すか、人間が視認しやすい文字列を残すかのどちらかになります。この記事では視認性の良い文字列を作る際によく使う中央揃え、縦揃えの例を紹介します。

 中央揃えの例は次です。

<?php

// 一行の文字数
$LINE_LENGTH = 40;

// 中央ぞろえの例
$msg = [];
$msg[] = 'abcdefg';
$msg[] = '123456789';
$msg[] = 'ABC';
echo implode(
    "\n",
    // 各行のメッセージに str_pad の両端パディングをかけると中央ぞろえになります
    array_map(static fn($str) => str_pad($str, $LINE_LENGTH, '-', STR_PAD_BOTH), $msg)
);

 各行の文字列を配列にまとめ、それを両端からのパディングにかけていきます。PHP の両端パディングはいい感じに文字列を中央に収めてくれます。出力結果は次です。

----------------abcdefg-----------------
---------------123456789----------------
------------------ABC-------------------

PHP: str_pad – Manual

 縦揃えも同様に str_pad が有効です。次の様にパディング長を取得して、それを使ってまとめて表示します。

// 表っぽい縦揃えの例
$msg = [];
$msg[] = ['lower', 'abcdefg'];
$msg[] = ['numeric', '123456789'];
$msg[] = ['UPPER','ABC'];
// パディングで埋めるときれいに揃う部分を抜き出し、パディングサイズを得ます。
// 左側だけ抜き出し
$leftMsgList = array_column($msg, 0);
// 左側の文字列長を取得し、その中から最大長を得る
$maxLen = max(array_map(static fn($str) => strlen($str), $leftMsgList));
echo implode(
    "\n",
    // 各行のメッセージの左側に得られた最大長のパディングをつけ、それを並べると縦が揃った表の様になり見栄えがよくなります。
    array_map(static fn($pair) => str_pad($pair[0], $maxLen, ' ', STR_PAD_LEFT).' : '.$pair[1], $msg)
);

 この実行結果は次で、左右のペアが分かりやすく、縦も揃って見栄えの良い文字列が得られます。

  lower : abcdefg
numeric : 123456789
  UPPER : ABC

 こんな感じで見やすい表示方法を使うとコンソールやログがみやすくなり、後の調査や運用が快適になります。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG