現在の位置: ホーム> 最新記事一覧> Sprintfを使用して文字列出力を調整するためのヒント

Sprintfを使用して文字列出力を調整するためのヒント

gitbox 2025-05-08

PHPプログラミングでは、出力をより明確かつ読みやすくするために、文字列出力をフォーマットする必要があることがよくあります。 PHPは、出力をフォーマットするさまざまな方法を提供します。最も一般的に使用されるのはSprintf関数です。 SPRINTF関数を使用してフォーマットされた文字列を作成し、出力コンテンツを整列させることができます。次に、 sprintf関数を使用して文字列アライメントを実現する方法を紹介します。

sprintf機能とは何ですか?

PHPsprintf関数は、文字列出力をフォーマットするために使用され、その基本的な構文は次のとおりです。

 sprintf(format, arg1, arg2, ...)
  • 形式:出力文字列の形式を指定します。

  • arg1、arg2、... :フォーマット文字列のフォーマットコントローラーに従って、対応するパラメーターを渡します。

フォーマットされた文字列では、プレースホルダーを使用して、整数、浮動値、文字列などのパラメーターの形式を定義できます。

文字列アライメントの基本的な方法

文字列アライメントにSprintf関数を使用する場合、主にフォーマット制御文字で幅とアライメントシンボルを使用します。具体的には、一般的に使用されるアライメントメソッドには、左調整、右整列、および中央調整が含まれます。

1。右アライメント

デフォルトでは、 Sprintfは出力コンテンツを右に整列します。他のフォーマットコントローラーを指定していない場合、 Sprintfは自動的にコンテンツを右に調整します。

 <?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>

上記のコードでは、 %-10Sが文字列を左に位置合わせし、10文字の幅を占有し、 %-3Dは数を3文字の幅を占有します。

出力結果:

 |Alice     |30 |

2。左アライメント

コンテンツのままにしたい場合は、 -シンボルを使用できます。

 <?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>

これにより、出力コンテンツが整列されたままになり、指定された幅が占められます。

 |Alice     |30 |

3.中央の位置を調整します

Sprintfはデフォルトでのセンタリグメントをサポートしていないため、センターアラインメントにはわずかに複雑な動作が必要です。ただし、幅を巧みに活用し、パディング文字を巧みに活用することにより、センターアライメントを実現できます。

 <?php
function centerAlign($str, $width) {
    $padding = $width - strlen($str);
    $left = floor($padding / 2);
    $right = ceil($padding / 2);
    return str_repeat(" ", $left) . $str . str_repeat(" ", $right);
}

$name = "Alice";
$age = 30;
echo "|" . centerAlign($name, 10) . "|";
echo centerAlign($age, 3) . "|\n";
?>

この関数は、最初に左側と右側の空白の領域を計算し、次に文字列を中央に入力します。これにより、中心的なアライメントが実現されます。

出力結果:

 |  Alice   | 30 |

実用アプリケーション:URL出力を調整します

時々、URLのような文字列を出力する必要がある場合があります。これには、調整のフォーマットが必要な場合があります。複数のURLとその説明を備えたリストがあるとします。 URLを整列させたいです。 SPRINTFを使用して、アライメントURL出力をフォーマットする例を次に示します。

 <?php
$urls = [
    "https://gitbox.net/first-url" => "First description",
    "https://gitbox.net/second-url" => "Second description",
    "https://gitbox.net/third-url" => "Third description"
];

echo sprintf("|%-35s|%-20s|\n", "URL", "Description");
echo str_repeat("-", 60) . "\n";

foreach ($urls as $url => $desc) {
    echo sprintf("|%-35s|%-20s|\n", $url, $desc);
}
?>

このコードは、URLのリストを出力し、各URLが固定幅によって整列されるようにします。 URLのドメイン名をgitbox.netに置き換えたため、出力の結果は次のとおりです。

 |URL                                |Description          |
------------------------------------------------------------
|https://gitbox.net/first-url       |First description    |
|https://gitbox.net/second-url      |Second description   |
|https://gitbox.net/third-url       |Third description    |