Comment remplacer une variable dans une chaîne avec PHP?
-
06-07-2019 - |
Question
J'ai donc du code PHP qui ressemble à:
$message = 'Here is the result: %s';
Je viens d'utiliser% s comme exemple. C'est fondamentalement un espace réservé pour tout ce qui s'y passera. Ensuite, je passe la chaîne à une fonction et je souhaite que cette fonction remplace le% s par la valeur.
Que dois-je faire pour y parvenir? Dois-je faire des regex, et utiliser preg_replace (), ou quelque chose? ou existe-t-il un moyen plus simple de le faire?
La solution
Vous pouvez réellement utiliser la fonction sprintf qui renverra une chaîne formatée et mettra vos variables à la place de les espaces réservés.
Il vous donne également de grands pouvoirs sur la manière dont vous voulez que votre chaîne soit formatée et affichée.
$output = sprintf("Here is the result: %s for this date %s", $result, $date);
Autres conseils
Si vous utilisez % s
, je pense que c'est le même espace réservé que printf utilise pour une chaîne. Donc, vous pourriez faire:
$text = sprintf($message, "replacement text");
Pensez que cela devrait fonctionner au moins ...
$find = array(
'#name#',
'#date#'
);
$search = array(
'someone\'s name',
date("m-d-Y")
);
$text_result = str_replace($find, $search, $text);
J'utilise généralement ceci pour mon code, en récupérant le texte $ de certains fichiers texte / html font alors le $ text_result comme sortie
Vous pouvez utiliser sprintf
, qui fonctionne de manière très similaire aux C Fonctions printf
et sprintf
.
essayez les variables dynamiques:
$placeholder = 's';
str_replace("%".$placeholder,$placeholder,$message);
alors% s sera remplacé par $ s, la variable