str_ireplace() unter Beibehaltung der Groß-/Kleinschreibung
Lesezeit: 2 Minuten
Francisc
Wie kann ich str_ireplace (oder etwas Ähnliches) verwenden, um Text für die Formatierung zu ersetzen und ihn dann mit denselben Großbuchstaben zurückzugeben?
Beispiel:
$original="The quick red fox jumps over the lazy brown dog.";
$find="thE";
print str_ireplace($find,'<b>'.$find.'</b>',$original);
Das wird ausgeben: das schneller Rotfuchs springt über den faulen braunen Hund.
Ich möchte, dass der ursprüngliche Fall beibehalten wird und nur die Formatierung angewendet wird, in diesem Beispiel fetter Text.
Vielen Dank.
$original = "The quick red fox jumps over the lazy brown dog.";
$new = preg_replace("/the/i", "<b>\$0</b>", $original);
gibt “Das schneller Rotfuchs springt rüber das fauler brauner Hund.” Wenn Sie bestimmte Wörter abgleichen möchten, können Sie Wortgrenzen hinzufügen: preg_replace('/\bthe\b/i', ....
Wenn Sie den Ersatz parametrisieren möchten, können Sie verwenden preg_quote:
Ich habe eine alternative Lösung geschrieben (eine Funktion, die eine reine Zeichenfolgenersetzung verwendet), um die Aufgabe zu erledigen, mit der Sie das Präfix und Suffix (zur Hervorhebung) einfach festlegen können:
function replace_keep_case($st1, $find1) {
/// set prefix and suffix here
$prefix="<span style="color:red;"><b>";
$suffix="</b></span>";
$index=0;
$resultstring="";
while ($index < strlen($st1)) {
if (strtoupper(substr($st1, $index, strlen($find1)))==strtoupper($find1)) {
$resultstring.=$prefix.substr($st1, $index, strlen($find1)). $suffix;
$index=$index+strlen($find1);
} else {
$resultstring.=substr($st1, $index, 1);
$index++;
}
}
return $resultstring;
}