Optimisation du « Remplacement des variables d'espace réservé dans une chaîne »
On peut rencontrer divers scénarios dans lesquels l'identification et le remplacement de variables d'espace réservé dans une chaîne sont cruciaux. Cet extrait de code démontre une fonction de remplacement dynamique, dynStr, qui localise les paires clé-valeur entre accolades ({}) et les met à jour en conséquence :
function dynStr($str,$vars) { preg_match_all("/\{[A-Z0-9_]+\}+/", $str, $matches); foreach($matches as $match_group) { foreach($match_group as $match) { $match = str_replace("}", "", $match); $match = str_replace("{", "", $match); $match = strtolower($match); $allowed = array_keys($vars); $match_up = strtoupper($match); $str = (in_array($match, $allowed)) ? str_replace("{".$match_up."}", $vars[$match], $str) : str_replace("{".$match_up."}", '', $str); } } return $str; } $variables = array("first_name" => "John","last_name" => "Smith","status" => "won"); $string = 'Dear {FIRST_NAME} {LAST_NAME}, we wanted to tell you that you {STATUS} the competition.'; echo dynStr($string,$variables); // Would output: 'Dear John Smith, we wanted to tell you that you won the competition.'
Cependant, comme le souligne l'auteur, cette implémentation souffre de redondance. accès au tableau et semble gourmand en calcul. On peut rationaliser ce processus en éliminant l'utilisation d'expressions régulières et en implémentant un simple remplacement de chaîne basé sur les paires clé-valeur dans le tableau "vars" :
$variables = array("first_name" => "John","last_name" => "Smith","status" => "won"); $string = 'Dear {FIRST_NAME} {LAST_NAME}, we wanted to tell you that you {STATUS} the competition.'; foreach($variables as $key => $value){ $string = str_replace('{'.strtoupper($key).'}', $value, $string); } echo $string; // Dear John Smith, we wanted to tell you that you won the competition.
Cette approche supprime le parcours inutile du tableau imbriqué et rationalise le processus de remplacement, ce qui donne un code plus propre et plus efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!