16 votes

Remplacer les variables dans une chaîne de caractères

Je travaille sur un site web multilingue en PHP et, dans mes fichiers de langues, j'ai souvent des chaînes de caractères qui contiennent plusieurs variables qui seront remplies ultérieurement pour compléter les phrases.

Actuellement, je place {VAR_NAME} dans la chaîne et en remplaçant manuellement chaque occurrence par la valeur correspondante lorsqu'elle est utilisée.

Donc, en gros :

{X} created a thread on {Y}

devient :

Dany created a thread on Stack Overflow

J'ai déjà pensé à sprintf mais je trouve cela peu pratique car cela dépend de l'ordre des variables qui peut changer d'une langue à l'autre.

Et j'ai déjà vérifié Comment remplacer une variable dans une chaîne par une valeur en php ? et pour l'instant, j'utilise essentiellement cette méthode.

Mais je suis intéressé de savoir s'il y a un moyen intégré (ou peut-être pas) pratique en PHP pour faire cela, considérant que j'ai déjà des variables nommées exactement comme X et Y dans l'exemple précédent, plus comme $$ pour une variable.

Ainsi, au lieu de faire str_replace sur la chaîne de caractères, je pourrais appeler une fonction comme celle-ci :

$X = 'Dany';
$Y = 'Stack Overflow';
$lang['example'] = '{X} created a thread on {Y}';

echo parse($lang['example']);

s'imprimerait également :

Dany created a thread on Stack Overflow

Merci !

Modifier

Les chaînes de caractères servent de modèles et peuvent être utilisées plusieurs fois avec des entrées différentes.

Donc, en gros, faire "{$X} ... {$Y}" ne fera pas l'affaire car je perdrai le modèle et la chaîne sera initialisée avec les valeurs de départ de $X y $Y qui ne sont pas encore déterminées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X