Dans la programmation PHP, la fonction sprintf est un outil très utile qui formate des chaînes et insère des valeurs dynamiques dans des modèles de chaîne prédéfinis. L'utilisation de la fonction sprintf peut rendre le code plus concis et plus facile à maintenir. Cet article explorera comment utiliser la fonction sprintf pour générer des tables HTML et montrer quelques techniques et méthodes pratiques.
La fonction sprintf est utilisée pour produire des chaînes formatées en variables au lieu de les sortir directement. Sa syntaxe de base est la suivante:
sprintf(string $format, mixed ...$values): string
$ format : chaîne de format, contenant des espaces réservés (par exemple % s , % d ).
$ valeurs : la valeur à insérer dans la chaîne formatée.
% s est un espace réservé à cordes, % D est un espace réservoir à chiffres et il y a de nombreux autres espaces réservés à choisir en fonction de vos besoins.
Regardons d'abord un exemple simple montrant comment utiliser Sprintf pour générer une table HTML avec un en-tête de table et un contenu de table.
<?php
// Tête
$tableHeader = sprintf(
"<tr><th>%s</th><th>%s</th><th>%s</th></tr>",
'Nom',
'âge',
'Ville'
);
// Données tabulaires
$data = [
['Zhang San', 25, 'Pékin'],
['Li si', 30, 'Shanghai'],
['Wang wu', 28, 'Guangzhou']
];
// Contenu de table
$tableContent = '';
foreach ($data as $row) {
$tableContent .= sprintf(
"<tr><td>%s</td><td>%d</td><td>%s</td></tr>",
$row[0],
$row[1],
$row[2]
);
}
// Complet HTML feuille
$table = sprintf(
"<table border='1'>%s%s</table>",
$tableHeader,
$tableContent
);
echo $table;
?>
Dans cet exemple, nous utilisons la fonction sprintf pour générer l'en-tête de table et le contenu de la table. $ TableHeader utilise % S Planolder pour insérer les noms de colonnes, tandis que $ tableContent utilise % s et % d pour insérer des données.
Si vous avez un tableau dynamique ou des données obtenues à partir de la base de données, vous pouvez également utiliser SprintF pour générer des tables HTML. Par exemple, supposons que les données suivantes soient obtenues à partir de la base de données:
// Simuler les données obtenues à partir de la base de données
$data = [
['Zhang San', 25, 'Pékin'],
['Li si', 30, 'Shanghai'],
['Wang wu', 28, 'Guangzhou']
];
Vous pouvez générer des tables dynamiquement via Sprintf :
<?php
$tableHeader = sprintf(
"<tr><th>%s</th><th>%s</th><th>%s</th></tr>",
'Nom',
'âge',
'Ville'
);
$tableContent = '';
foreach ($data as $row) {
$tableContent .= sprintf(
"<tr><td>%s</td><td>%d</td><td>%s</td></tr>",
$row[0],
$row[1],
$row[2]
);
}
$table = sprintf(
"<table border='1'>%s%s</table>",
$tableHeader,
$tableContent
);
echo $table;
?>
Vous pouvez également utiliser Sprintf pour générer des tables HTML avec des liens. Par exemple, si vous ajoutez un lien à une colonne dans une table, l'adresse de liaison peut être générée dynamiquement en fonction des données:
<?php
$data = [
['Zhang San', 25, 'Pékin', 'https://gitbox.net/user/zhangsan'],
['Li si', 30, 'Shanghai', 'https://gitbox.net/user/lisi'],
['Wang wu', 28, 'Guangzhou', 'https://gitbox.net/user/wangwu']
];
$tableHeader = sprintf(
"<tr><th>%s</th><th>%s</th><th>%s</th><th>%s</th></tr>",
'Nom',
'âge',
'Ville',
'Page d'accueil personnelle'
);
$tableContent = '';
foreach ($data as $row) {
$tableContent .= sprintf(
"<tr><td>%s</td><td>%d</td><td>%s</td><td><a href='%s'>Page d'accueil personnelle</a></td></tr>",
$row[0],
$row[1],
$row[2],
$row[3]
);
}
$table = sprintf(
"<table border='1'>%s%s</table>",
$tableHeader,
$tableContent
);
echo $table;
?>
Dans cet exemple, nous ajoutons un lien pour chaque utilisateur, l'adresse de liaison est générée dynamiquement et le nom de domaine a été remplacé par gitbox.net .
Parfois, nous pouvons avoir besoin de formater le tableau généré pour le rendre plus lisible. Par exemple, nous pouvons ajouter des classes CSS ou définir le style de la table lors de la génération du tableau:
<?php
$tableHeader = sprintf(
"<tr><th>%s</th><th>%s</th><th>%s</th></tr>",
'Nom',
'âge',
'Ville'
);
$tableContent = '';
foreach ($data as $row) {
$tableContent .= sprintf(
"<tr><td class='name'>%s</td><td class='age'>%d</td><td class='city'>%s</td></tr>",
$row[0],
$row[1],
$row[2]
);
}
$table = sprintf(
"<table class='user-table' border='1' style='border-collapse: collapse; padding: 10px;'>%s%s</table>",
$tableHeader,
$tableContent
);
echo $table;
?>
En ajoutant des classes CSS aux tables et aux cellules de table, vous pouvez facilement contrôler le style, ce qui rend la table plus esthétique et lisible.