Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Platzhaltervariablen in einem String effizient ersetzen?

Wie kann ich Platzhaltervariablen in einem String effizient ersetzen?

Susan Sarandon
Susan SarandonOriginal
2024-11-23 07:05:10250Durchsuche

How Can I Efficiently Replace Placeholder Variables in a String?

Optimierung des „Ersetzens von Platzhaltervariablen in einer Zeichenfolge“

Man kann auf verschiedene Szenarien stoßen, in denen das Identifizieren und Ersetzen von Platzhaltervariablen in einer Zeichenfolge von entscheidender Bedeutung ist. Dieses Code-Snippet demonstriert eine dynamische Ersetzungsfunktion, dynStr, die in geschweiften Klammern ({}) eingeschlossene Schlüssel-Wert-Paare findet und sie entsprechend aktualisiert:

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.'

Wie der Autor jedoch hervorhebt, leidet diese Implementierung unter Redundanz Array-Zugriff und scheint rechenintensiv zu sein. Man kann diesen Prozess rationalisieren, indem man die Verwendung regulärer Ausdrücke eliminiert und einen einfachen String-Ersatz basierend auf den Schlüssel-Wert-Paaren im „vars“-Array implementiert:

$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.

Dieser Ansatz eliminiert das unnötige Durchlaufen verschachtelter Arrays und rationalisiert den Ersetzungsprozess und führt zu einem saubereren und effizienteren Code.

Das obige ist der detaillierte Inhalt vonWie kann ich Platzhaltervariablen in einem String effizient ersetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn