Dans la programmation PHP, nous devons souvent formater la sortie de chaîne pour rendre la sortie plus claire et plus facile à lire. PHP fournit une variété de méthodes pour formater la sortie, la plus couramment utilisée est la fonction sprintf . La fonction sprintf peut être utilisée pour créer des chaînes formatées et nous permet d'aligner le contenu de sortie. Ensuite, nous présenterons comment utiliser la fonction sprintf pour réaliser l'alignement des chaînes.
La fonction sprintf dans PHP est utilisée pour formater la sortie de chaîne, et sa syntaxe de base est la suivante:
sprintf(format, arg1, arg2, ...)
Format : spécifie le format de la chaîne de sortie.
Arg1, Arg2, ... : passez dans les paramètres correspondants en fonction du contrôleur de format dans la chaîne de format.
Dans les chaînes formatées, nous pouvons utiliser des espaces réservés pour définir le format de paramètres, tels que les entiers, les valeurs flottantes ou les chaînes.
Lorsque vous utilisez la fonction sprintf pour l'alignement des chaînes, nous utilisons principalement les symboles de largeur et d'alignement dans le caractère de contrôle du format. Plus précisément, les méthodes d'alignement couramment utilisées incluent l'alignement gauche, l'alignement droit et l'alignement central.
Par défaut, Sprintf alignera droit le contenu de sortie. Si vous ne spécifiez pas d'autres contrôleurs de format, Sprintf alignera automatiquement le contenu.
<?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>
Dans le code ci-dessus, % -10s fait plus aligner la chaîne à gauche et occupe la largeur de 10 caractères, tandis que % -3d fait d'occuper la largeur de 3 caractères.
Résultat de sortie:
|Alice |30 |
Si vous souhaitez que le contenu soit aligné, vous pouvez utiliser le symbole .
<?php
$name = "Alice";
$age = 30;
echo sprintf("|%-10s|%-3d|\n", $name, $age);
?>
Cela entraînera l'alignement du contenu de sortie, occupant la largeur spécifiée:
|Alice |30 |
L'alignement du centrage nécessite une opération légèrement plus compliquée, car Sprintf ne prend pas en charge l'alignement de centrage par défaut. Cependant, nous pouvons obtenir un alignement central en tirant intelligemment en levant des caractères de largeur et de rembourrage.
<?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";
?>
La fonction calcule d'abord la zone vide sur les côtés gauche et droite, puis remplit la chaîne au milieu. Cela permettra d'aligner centré.
Résultat de sortie:
| Alice | 30 |
Parfois, nous devons sortir une chaîne de type URL, ce qui peut nécessiter un alignement de formatage. Supposons que nous ayons une liste avec plusieurs URL et leurs descriptions. Nous voulons aligner l'URL. Voici un exemple de formatage de la sortie d'URL d'alignement à l'aide de Sprintf :
<?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);
}
?>
Ce code sortira une liste d'URL et s'assurera que chaque URL est alignée par une largeur fixe. Puisque nous avons remplacé le nom de domaine de l'URL par gitbox.net , le résultat de sortie est le suivant:
|URL |Description |
------------------------------------------------------------
|https://gitbox.net/first-url |First description |
|https://gitbox.net/second-url |Second description |
|https://gitbox.net/third-url |Third description |