2016-05-24 5 views
1

Wenn Sie versuchen, die str_replace-Funktion von PHP zu verwenden, um mehrere Teilstrings zu ersetzen, gibt es eine Möglichkeit, die Strings, die gerade ersetzt wurden, zu ignorieren?Ersetzen Sie mehrere Teilstrings in PHP, ohne die alten zu ersetzen

Zum Beispiel, wenn der folgende Codeblock ausgeführt wird, ersetzt er das "o" in "<starke>" von der ersten Ersetzung.

$str="Hello world."; 
$old=array("e","o"); 
$new=array("<strong>e</strong>","<strong>o</strong>"); 

echo str_replace($old,$new,$str); 

Der tatsächliche Ausgang:

// "H<str<strong>o</strong>ng>e</str<strong>o</strong>ng>ll<strong>o</strong> w<strong>o</strong>rld." 

Die erwartete Ausgabe:

// "H<strong>e</strong>ll<strong>o</strong> w<strong>o</strong>rld." 

Antwort

1

Verwendung strtr().

Von der PHP-Handbuch:

Die längsten Schlüssel wird zuerst versucht werden. Sobald ein Teilstring ersetzt wurde, wird der neue Wert nicht erneut gesucht.

+0

Danke, das ist genau das, was ich gesucht habe - ich habe es in der Dokumentation verpasst nicht glauben! –

1

Die alternative Lösung preg_replace Funktion:

echo preg_replace("/(e|o)/i", "<strong>$1</strong>", $str); 
// H<strong>e</strong>ll<strong>o</strong> w<strong>o</strong>rld. 
Verwandte Themen