Comment puis-je remplacer efficacement les variables d'espace réservé dans une chaîne ?

Susan Sarandon
Libérer: 2024-11-23 07:05:10
original
262 Les gens l'ont consulté

How Can I Efficiently Replace Placeholder Variables in a String?

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.'
Copier après la connexion

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.
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal